【问题标题】:Angular jasmine unit test error with 'and' on a spy间谍上带有“和”的角茉莉花单元测试错误
【发布时间】:2018-09-17 17:49:35
【问题描述】:

谁能解释我在 Jasmine 单元测试中看到的这个错误,我在模拟服务调用上创建了一个间谍并尝试返回一个值?

这是一个间谍的例子:

mockService = jasmine.createSpyObj('MyService', ['getSomeId']);
mockService.getSomeId.and.returnValue(10);

当我运行 ng test 时,控制台窗口中显示以下错误 - 但测试实际上在浏览器中成功通过:

错误 TS2339:“() => 字符串”类型上不存在属性“and”。 src/app/services/myservice.service.spec.ts(57,45): 错误 TS2339: 属性 'and' 在类型 '(controller: string) => string' 上不存在。

有什么想法吗?

【问题讨论】:

  • (controller: string) => string 是实际实现的签名吗?使用(mockService.getSomeId as jasmine.Spy).and.returnValue(10); 时是否看到相同的错误?
  • 你说得对,以这种方式投射效果很好 - 我意识到我错误地设置了我的模拟(间谍)服务的类型。

标签: angular unit-testing karma-jasmine


【解决方案1】:

Alex 阐明了这个问题 - 我强烈地将模拟服务键入为服务类型,而不是间谍类型。删除类型后,错误就消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-18
    • 2020-08-19
    • 1970-01-01
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多