Jasmine spyOn有特定的论点

时间:2016-05-04 18:28:40

标签: jasmine spyon

假设我有

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'

有什么建议吗?

2 个答案:

答案 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);

详细信息:https://jasmine.github.io/api/edge/Spy#withArgs