Javascript 使用Jack进行Ajax单元测试模拟
我正在使用Jack作为JavaScript模拟库。我也在使用qunit 在我的javascript代码中有以下AJAX调用,我正试图为其编写测试Javascript 使用Jack进行Ajax单元测试模拟,javascript,unit-testing,qunit,Javascript,Unit Testing,Qunit,我正在使用Jack作为JavaScript模拟库。我也在使用qunit 在我的javascript代码中有以下AJAX调用,我正试图为其编写测试 $.ajax({ url: $('#advance_search_form').attr('action'), type: 'post', dataType: 'json', data: parameterizedData, success: function(json) { APP.actOnR
$.ajax({
url: $('#advance_search_form').attr('action'),
type: 'post',
dataType: 'json',
data: parameterizedData,
success: function(json) {
APP.actOnResult.successCallback(json);
}
});
下面的代码正在运行
jack(function() {
jack.expect('$.ajax').exactly('1 time');
}
但是,我想测试是否所有参数都正确提交。我试着跟随,但没有成功
jack.expect('$.ajax').exactly('1 time').whereArgument(0).is(function(){
var args=参数;
ok(“”,args.url,'url应该有效’);
//对象多个关键点的相似性检验
});
我想掌握参数,以便执行一系列测试。两种方法:
Use.hasProperties():
。。。或者捕获参数并做出qunit断言:
var ajaxArgs;
jack.expect('$.ajax').once().mock(function() { ajaxArgs = arguments[0]; });
// ... the code that triggers .ajax()
equals('http://localhost:3000/users', ajaxArgs.url);
IMO表示,第一个版本使用了更多的jackapi(这值得更好的文档),并且可读性更强
后一个版本将为您提供更好的错误报告。太棒了。感谢您的快速浏览。花两分钟时间将这两种方法添加到《杰克自述》中。再一次和杰克干得好。我喜欢。第一种方法是有效的。第二种方法是失败的。参数和参数[0]都报告为未定义。奇怪。尝试用函数(a){ajaxArgs=a;}替换函数部分。将a传递给函数解决了问题。非常感谢。
var ajaxArgs;
jack.expect('$.ajax').once().mock(function() { ajaxArgs = arguments[0]; });
// ... the code that triggers .ajax()
equals('http://localhost:3000/users', ajaxArgs.url);