2010-02-16 26 views
5

Tôi đang sử dụng Jack làm thư viện mô phỏng JavaScript. http://github.com/keronsen/jack. Tôi cũng đang sử dụng qunit.Thử nghiệm đơn vị Ajax chế nhạo bằng cách sử dụng Jack

Tôi đã thực hiện cuộc gọi AJAX trong mã javascript của mình mà tôi đang thực hiện để viết kiểm tra.

$.ajax({ 
    url: $('#advance_search_form').attr('action'), 
    type: 'post', 
    dataType: 'json', 
    data: parameterizedData, 
    success: function(json) { 
     APP.actOnResult.successCallback(json); 
    } 
}); 

Mã sau đang hoạt động.

jack(function() { 
    jack.expect('$.ajax').exactly('1 time'); 
} 

Tuy nhiên tôi muốn kiểm tra xem tất cả các đối số có được gửi đúng cách hay không. Tôi đã thử làm theo nhưng không hoạt động.

jack.expect('$.ajax').exactly('1 time').whereArgument(0).is(function(){ 

var args = arguments; ok ('http://localhost:3000/users', args.url, 'url phải hợp lệ'); // thử nghiệm similary cho nhiều phím của đối tượng });

Tôi muốn giữ các đối số để tôi có thể thực hiện kiểm tra pin.

Trả lời

4

Hai cách tiếp cận:

Sử dụng .hasProperties():

jack.expect('$.ajax').once() 
    .whereArgument(0).hasProperties({ 
     'type': 'post', 
     'url': 'http://localhost:3000/users' 
    }); 

... hoặc chụp các đối số và làm cho khẳng định QUnit:

var ajaxArgs; 
jack.expect('$.ajax').once().mock(function() { ajaxArgs = arguments[0]; }); 
// ... the code that triggers .ajax() 
equals('http://localhost:3000/users', ajaxArgs.url); 

Phiên bản đầu tiên sử dụng nhiều Jack API (xứng đáng với tài liệu tốt hơn), và dễ đọc hơn, IMO.

Phiên bản thứ hai sẽ cung cấp cho bạn báo cáo lỗi tốt hơn nhiều.

+0

tuyệt vời. Cảm ơn bạn đã xem nhanh. –

+0

Mất hai phút để thêm cả hai phương pháp tiếp cận vào README của jack. một lần nữa công việc tốt với jack. Tôi thích nó. –

+0

cách tiếp cận đầu tiên đang hoạt động. Cách tiếp cận thứ hai là không thành công. Cả hai đối số và đối số [0] đều báo cáo là không xác định. –

Các vấn đề liên quan