假设我有
spyOn($cookieStore,'get').and.returnValue('abc');
这对我的用例来说太笼统了。我们随时打电话
$cookieStore.get('someValue') --> returns 'abc'
$cookieStore.get('anotherValue') --> returns 'abc'
我想设置一个spyOn,所以我根据参数得到不同的回报:
$cookieStore.get('someValue') --> returns 'someabc'
$cookieStore.get('anotherValue') --> returns 'anotherabc'
有什么建议吗?
答案 0 :(得分:24)
您可以使用callFake:
spyOn($cookieStore,'get').and.callFake(function(arg) {
if (arg === 'someValue'){
return 'someabc';
} else if(arg === 'anotherValue') {
return 'anotherabc';
}
});
答案 1 :(得分:3)
对于使用版本3及更高版本的jasmine的用户,可以通过使用类似于sinon存根的语法来实现:
spyOn(componentInstance, 'myFunction')
.withArgs(myArg1).and.returnValue(myReturnObj1)
.withArgs(myArg2).and.returnValue(myReturnObj2);