Return 特定值仅适用于特定参数
Return Certain Value Only With Certain Parameters
在 Jasmine 中,是否有任何方法可以 return 只有在使用特定参数调用时才从间谍中获取特定值?例如,我可以有这样的东西吗:
describe('my test', function() {
beforeEach(function() {
this.mySpy = jasmine.createSpy();
// not sure how to do this, so this is pseudocode
this.mySpy.and.returnValue(true).when.calledWith(false);
this.mySpy.and.returnValue(false).when.calledWith(true);
});
it('returns true if called with false', function() {
expect(this.mySpy(false)).toEqual(true);
});
it('returns false if called with true', function() {
expect(this.mySpy(true)).toEqual(false);
});
});
我翻遍了文档,但找不到我想要的东西,也找不到相关的东西。我可以理解为什么没有这种情况——您知道您在调用什么、何时调用、为什么调用以及使用什么参数,那么为什么要更具体一些呢?同时,这可能会导致更多的代码,当您可以 return 一次准确指定您想要的内容,而不必再次指定它时。
我 运行 今天遇到了同样的问题。我修复它的方法是调用一个假方法而不是 "someMethod" 并将参数处理为 return 所需的 return 值:
spyOn(SomeObj, "someMethod").and.callFake(function (property ) {
if (property === "someValue") {
return "someReturnValue";
} else if (property === "someOtherValue") {
return "someOtherReturnValue";
}
});
在 Jasmine 中,是否有任何方法可以 return 只有在使用特定参数调用时才从间谍中获取特定值?例如,我可以有这样的东西吗:
describe('my test', function() {
beforeEach(function() {
this.mySpy = jasmine.createSpy();
// not sure how to do this, so this is pseudocode
this.mySpy.and.returnValue(true).when.calledWith(false);
this.mySpy.and.returnValue(false).when.calledWith(true);
});
it('returns true if called with false', function() {
expect(this.mySpy(false)).toEqual(true);
});
it('returns false if called with true', function() {
expect(this.mySpy(true)).toEqual(false);
});
});
我翻遍了文档,但找不到我想要的东西,也找不到相关的东西。我可以理解为什么没有这种情况——您知道您在调用什么、何时调用、为什么调用以及使用什么参数,那么为什么要更具体一些呢?同时,这可能会导致更多的代码,当您可以 return 一次准确指定您想要的内容,而不必再次指定它时。
我 运行 今天遇到了同样的问题。我修复它的方法是调用一个假方法而不是 "someMethod" 并将参数处理为 return 所需的 return 值:
spyOn(SomeObj, "someMethod").and.callFake(function (property ) {
if (property === "someValue") {
return "someReturnValue";
} else if (property === "someOtherValue") {
return "someOtherReturnValue";
}
});