javascript – Ajax单元测试使用Jack进行模拟

我使用Jack作为JavaScript模拟库. http://github.com/keronsen/jack我也在使用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 = arguments;
  ok(‘http://localhost:3000/users‘,args.url,’url应该有效’);
  //对象的许多键的类似测试
  });

我想得到一些论据,以便我可以进行一系列测试.

最佳答案
两种方法

使用.hasProperties():

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

…或捕获参数并进行qunit断言:

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

第一个版本使用了更多的Jack API(值得更好的文档),并且更具可读性,IMO.

后一版本将为您提供更好的错误报告.

相关文章

JS原生Ajax操作(XMLHttpRequest) GET请求 POST请求 兼容性问题 利用iframe模拟ajax 实现表单提交的返回...
AJAX 每日更新前端基础,如果觉得不错,点个star吧 😃 https://github.com/WindrunnerMax/E...
踩坑Axios提交form表单几种格式 前后端分离的开发前后端, 前端使用的vue,后端的安全模块使用的SpringSe...
很早就听闻ajax的名声,但是却一直不知道怎么用,今天自己捣鼓了一下,竟然会用了,哈哈哈哈。 为了防止...
需要在服务器上进行哈 jquery的ajax方法: // jquery请求 $.ajax({ url: "./server/slider.js...
Ajax函数封装ajax.js // Get / Post // 参数 get post // 是否异步 // 如何处理响应数据 // URL // var...