目前我有以下代码,将设置sinon服务器并做一些其他的事情,FakeServer是一个AMD模块,我可以导入到我的测试中。它有一个create()和destroy()方法:
describe('do something', function() {
var server;
beforeEach(function() {
server = FakeServer.create();
setupRoutes();
});
afterEach( function(){
FakeServer.destroy(server);
});
我实际上想要的是自动将此逻辑添加到beforeEach和afterEach函数中(以防止用户忘记添加afterEach语句)。
就像这样:
describe('do something', function() {
var server = FakeServer.init(this);
我如何才能自动设置beforeEach和afterEach函数来调用fake_server create()和destrow()函数呢?
fake_server.js
define(function(require) {
require('sinon.server');
"use strict";
function create() {
$.ajaxSetup({
async: false
});
var server = sinon.fakeServer.create();
server.autoRespond = true;
return server;
}
function destroy(server) {
server.restore();
$.ajaxSetup({
async: true
});
}
return {
create : create,
destroy : destroy
}
});
3条答案
按热度按时间f4t66c6m1#
这是我想出的.我相信它的工作原理,但我没有像你一样的设置.我张贴我的解决方案,其中有我需要得到这个运行的修改.我希望它把你的正确轨道.
因此,基本上在fake_server init call中,我会覆盖beforeEach和afterEach的实现,以调用您的服务器代码,然后调用原始函数调用它们的任何内容。如果测试文件中有额外的beforeEach或afterEach设置,这将处理。
我无法从init函数返回服务器,因为它直到beforeEach实际被调用才被初始化,但这可以更改为。我向FakeServer添加了一个帮助函数来获取服务器。
fake_server.js
testFile.js
lh80um4z2#
beforeEach
和afterEach
是全局函数,你可以添加任意数量的钩子。你应该可以简单地从你的helper模块调用它们,而不需要做任何特殊的事情:bogh5gae3#
});