Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Jack进行Ajax单元测试模拟_Javascript_Unit Testing_Qunit - Fatal编程技术网

Javascript 使用Jack进行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

我正在使用Jack作为JavaScript模拟库。我也在使用qunit

在我的javascript代码中有以下AJAX调用,我正试图为其编写测试

$.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);