首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带有特定参数的Jasmine spyOn

带有特定参数的Jasmine spyOn
EN

Stack Overflow用户
提问于 2016-05-05 02:28:40
回答 3查看 41.7K关注 0票数 32

假设我有

代码语言:javascript
复制
spyOn($cookieStore,'get').and.returnValue('abc');

这对于我的用例来说太笼统了。任何时候我们打电话给

代码语言:javascript
复制
$cookieStore.get('someValue') -->  returns 'abc'
$cookieStore.get('anotherValue') -->  returns 'abc'

我想设置一个spyOn,这样我就可以根据参数得到不同的返回:

代码语言:javascript
复制
$cookieStore.get('someValue') -->  returns 'someabc'
$cookieStore.get('anotherValue') -->  returns 'anotherabc'

有什么建议吗?

EN

回答 3

Stack Overflow用户

发布于 2016-07-08 18:41:46

您可以使用callFake

代码语言:javascript
复制
spyOn($cookieStore,'get').and.callFake(function(arg) {
    if (arg === 'someValue'){
        return 'someabc';
    } else if(arg === 'anotherValue') {
        return 'anotherabc';
    }
});
票数 45
EN

Stack Overflow用户

发布于 2020-07-17 03:29:50

对于使用版本3或更高版本的jasmine,您可以通过使用类似于sinon存根的语法来实现这一点:

代码语言:javascript
复制
spyOn(componentInstance, 'myFunction')
      .withArgs(myArg1).and.returnValue(myReturnObj1)
      .withArgs(myArg2).and.returnValue(myReturnObj2);

详情请访问:https://jasmine.github.io/api/edge/Spy#withArgs

票数 15
EN

Stack Overflow用户

发布于 2021-12-22 18:59:38

实现相同结果的另一种方法是……(在不使用测试床的情况下编写单元测试时非常理想)在根描述块中声明spy

代码语言:javascript
复制
const storageServiceSpy = jasmine.createSpyObj('StorageService',['getItem']);

并将此spy注入到构造函数中原始服务的位置。

代码语言:javascript
复制
service = new StoragePage(storageServiceSpy)

在it()代码块中...

代码语言:javascript
复制
storageServiceSpy.getItem.withArgs('data').and.callFake(() => {})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37035321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档