Javascript Jasmine不会在每个测试规范之后重置spy
我有以下规格Javascript Jasmine不会在每个测试规范之后重置spy,javascript,unit-testing,testing,junit,jasmine,Javascript,Unit Testing,Testing,Junit,Jasmine,我有以下规格 describe("SN.ExitHistory", function() { var exitHistory; beforeEach(function() { SN.Utils = jasmine.createSpy("utils").andCallFake(function() { function readSNCookie(cookieName, key) { return "google.com";
describe("SN.ExitHistory", function() {
var exitHistory;
beforeEach(function() {
SN.Utils = jasmine.createSpy("utils").andCallFake(function() {
function readSNCookie(cookieName, key) {
return "google.com";
}
function isUndefinedOrNull(param) {
return (param == null) || (param === "null");
}
function createSNCookie(snCookieName, key, value, lifeTime) {
}
var me = {
readSNCookie : readSNCookie,
isUndefinedOrNull : isUndefinedOrNull,
createSNCookie : createSNCookie
};
return me;
})();
exitHistory = SN.ExitHistory();
});
it("return last exit link", function() {
expect(exitHistory.getLastExitLink()).toEqual("google.com");
});
});
exitistory.getLastExitLink
内部使用SN.Utils
测试完成后,Jasmine不会删除间谍对象UTIL。在下一个测试套件中,我还可以看到相同的UTIL。每次测试完成后,有没有办法重置spy对象
如果我为UTIL创建一个新对象,而不是创建spy,行为是相同的。那么在这个场景中,间谍和实际对象之间有什么区别呢
如果我错了,请纠正我 不久前我也遇到了同样的问题,经过几天的努力,我找到了解决办法。如果你使用另一种方式,你的间谍将被重置,因此请尝试使用
spyOn(SN, 'Utils');
这里描述了间谍:
使用
间谍
并在描述规范块中的块之前在中声明你的间谍,当每个规范被拆除时,间谍将被清理干净
aSpec.js
描述('something',()=>{
beforeAll(()=>spyOn(someObject,'someMethod')。和.returnValue('foo');
它('被监视',()=>{
expect(someObject.someMethod()).toEqual('foo');
});
});
另一个spec.js
description('something',()=>{
beforeAll(()=>spyOn(someObject,'someMethod')。和.returnValue('bar');
它('被监视',()=>{
expect(someObject.someMethod()).toEqual('bar');
});
});
createSpy
现在已被弃用,并且在createSpy
定义之前的源代码中有一条注释,您不应该使用此内部方法。而且这个答案是正确的,顺便说一句,它将解决作者的问题a,对不起,它是jasmine.Spy()不允许调用:>注意:不要直接调用新jasmine.Spy()
间谍-间谍必须使用spyOn
,jasmine.createSpy
或jasmine.createSpyObj
创建,无论如何,spyOn
是作者需要的东西createSpy
仅适用于间谍功能,而不适用于对象绑定方法。这不适用于Jasmine 1.0.3(就我所知,1.3的源代码也适用于1.3):对于我当前基于1.0.3的测试套件,它说“已经被间谍发现”。我正在使用重置间谍。wascall=false
在测试进一步的期望时。@shaman.sir我不知道您在哪里发现createSpy
被弃用的信息-它的用途与spyOn
略有不同,在1.3.1评论中没有这样说