Jasmine Spy 根据参数 return 不同的值
Jasmine Spy to return different values based on argument
我正在监视一个 JS 方法。我想根据方法的实际参数 return 不同的东西。我试过 callFake 并尝试使用 arguments[0] 访问参数,但它说 arguments[0] 未定义。
这是代码 -
spyOn(testService, 'testParam').and.callFake(function() {
var rValue = {};
if(arguments[0].indexOf("foo") !== -1){
return rValue;
}
else{
return {1};
}
})
这里推荐 - Any way to modify Jasmine spies based on arguments?
但这对我不起作用。
使用参数应该没问题。另外请注意,您能否将整个对象粘贴到测试中 - 尽管这不是问题的根源。
下面是我的使用方法。查看实际效果 here
var testObj = {
'sample': "This is a sample string",
'methodUnderTest': function(param) {
console.log(param);
return param;
}
};
testObj.methodUnderTest("You'll notice this string on console");
describe('dummy Test Suite', function() {
it('test param passed in', function() {
spyOn(testObj, 'methodUnderTest').and.callFake(function() {
var param = arguments[0];
if (param === 5) {
return "five";
}
return param;
});
var val = testObj.methodUnderTest(5);
expect(val).toEqual('five');
var message = "This string is not printed on console";
val = testObj.methodUnderTest(message);
expect(val).toEqual(message);
});
});
我正在监视一个 JS 方法。我想根据方法的实际参数 return 不同的东西。我试过 callFake 并尝试使用 arguments[0] 访问参数,但它说 arguments[0] 未定义。 这是代码 -
spyOn(testService, 'testParam').and.callFake(function() {
var rValue = {};
if(arguments[0].indexOf("foo") !== -1){
return rValue;
}
else{
return {1};
}
})
这里推荐 - Any way to modify Jasmine spies based on arguments?
但这对我不起作用。
使用参数应该没问题。另外请注意,您能否将整个对象粘贴到测试中 - 尽管这不是问题的根源。
下面是我的使用方法。查看实际效果 here
var testObj = {
'sample': "This is a sample string",
'methodUnderTest': function(param) {
console.log(param);
return param;
}
};
testObj.methodUnderTest("You'll notice this string on console");
describe('dummy Test Suite', function() {
it('test param passed in', function() {
spyOn(testObj, 'methodUnderTest').and.callFake(function() {
var param = arguments[0];
if (param === 5) {
return "five";
}
return param;
});
var val = testObj.methodUnderTest(5);
expect(val).toEqual('five');
var message = "This string is not printed on console";
val = testObj.methodUnderTest(message);
expect(val).toEqual(message);
});
});