使用Mocha.js进行Javascript测试:如何模拟Mocha中的回调
Javascript Testing with Mocha.js: How to mock out a callback in mocha?
我的测试:
describe("Something", function() {
it("does the right thing", function(done) {
callExternalApi(["mockData1", "mockData2"], function(err, ajaxResults) {
// how do I mock out the api requests here and return mocked err, and ajaxResults
});
});
});
我的功能:
function callExternalApi(data, callback) {
$.ajax({
...blah..
success: function(ajaxResults) {
callback(null, ajaxResults);
},
error: function(err) {
callback(err, null);
}
})
}
理想情况下,我不想做某种http模拟。我只想不调用这个函数,并在回调中返回一些东西
您应该看看Sinon。我已经能够在我的node.js应用程序中使用它,效果非常好。您可以使用它来存根jQuery的ajax
方法,并使存根调用您的回调函数,如下所示:
var stub = sinon.stub(jQuery, "ajax");
stub.yieldsTo("success", [{ foo: "bar" }]);
完成后,不要忘记使用stub.restore()
恢复存根。
查看文档以了解更高级的用法。
结账https://github.com/pgte/nock它提供了一种简单而干净的方法,通过直接拦截来模拟对http请求的响应!
例如,如果你的应用程序调用www.api.somesite.com/items/item7,你可以在测试前简单地定义它,如下所示:
var nock = require('nock');
var item7 = require('./item7.json');
var scope = nock("www.api.somesite.com").get("/items/item7").reply(200, item7);
//Your test here.
还可以查看其录制功能!
相关文章:
- 在VanillaJS中模拟模型双向数据绑定
- 使用jasmine模拟对服务器的调用
- 模拟谷歌地图中的点击
- 使用模拟按键在输入框中自动输入文本
- 模拟chrome.storage.local函数使用Jasmine
- 从数据库中检索字段,而不模拟它们
- react testUtils模拟点击单选按钮而不触发onchange
- Mocha react本地路由器编译错误
- 如何在Mocha/Chai中测试JS原型(非模块)
- 如何在ember单元测试中模拟_super()方法
- Javascript中对象的每个()的模拟值
- 模拟<按钮>在<asp:button>
- 使用nock模拟mocha中具有特定请求头的超级代理请求
- 如何用mocha和rewire模拟node.js单元测试中的Q方法
- 使用Mocha.js进行Javascript测试:如何模拟Mocha中的回调
- 如何在mocha测试中模拟全局变量(define、module、window)
- 全局BeforeEach,用于用Mocha和Angular模拟HTTP请求
- 如何用mocha.js模拟依赖类进行单元测试
- Mocha JS-模拟父类模块
- 如何在karma/mocha测试套件中模拟窗口对象属性