Angular TypeError:jasmine.createSpyObj不是函数

Angular TypeError:jasmine.createSpyObj不是函数,angular,jasmine,Angular,Jasmine,我需要对一个组件方法进行单元测试,该组件方法不返回承诺,但在服务中内部调用一个返回承诺的方法,因此单元测试执行会立即返回到“it”块。这将导致我应该查看的对象中的某些值尚未指定。这似乎正是我需要的。不幸的是,即使是最基本的单元测试也不允许我创建间谍对象 下面的代码 describe('my unit test', () => { var myService; beforeEach(() => { myService = jasmine.create

我需要对一个组件方法进行单元测试,该组件方法不返回承诺,但在服务中内部调用一个返回承诺的方法,因此单元测试执行会立即返回到“it”块。这将导致我应该查看的对象中的某些值尚未指定。这似乎正是我需要的。不幸的是,即使是最基本的单元测试也不允许我创建间谍对象

下面的代码

describe('my unit test', () => {

    var myService;

    beforeEach(() => {
        myService = jasmine.createSpyObj('myService', ['myMethodOne', 'myMethodTwo']);
        myService.myMethodOne();
    });

    it("my service test", () => {
        expect(myService.myMethodOne).toBeDefined();
        expect(myService.myMethodOne).toHaveBeenCalled();
    });

});
失败于

>npm test

> iwp-app@0.0.0 test D:\Users\brock\Source
> jest

 FAIL  component.spec.ts
  my unit test
    × my service test (41ms)

  ● my unit test › my service test

    TypeError: jasmine.createSpyObj is not a function

      at component.spec.ts:29:25
      at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (node_modules/zone.js/dist/zone.js:388:26)
      at ProxyZoneSpec.Object.<anonymous>.ProxyZoneSpec.onInvoke (node_modules/zone.js/dist/proxy.js:128:39)
      at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (node_modules/zone.js/dist/zone.js:387:32)
      at Zone.Object.<anonymous>.Zone.run (node_modules/zone.js/dist/zone.js:138:43)
      at Object.testBody.length (node_modules/jest-zone-patch/index.js:50:27)

  ● my unit test › my service test

    TypeError: Cannot read property 'myMethodOne' of undefined

      at create-template.component.spec.ts:34:22
      at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (node_modules/zone.js/dist/zone.js:388:26)
      at ProxyZoneSpec.Object.<anonymous>.ProxyZoneSpec.onInvoke (node_modules/zone.js/dist/proxy.js:128:39)
      at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (node_modules/zone.js/dist/zone.js:387:32)
      at Zone.Object.<anonymous>.Zone.run (node_modules/zone.js/dist/zone.js:138:43)
      at Object.testBody.length (node_modules/jest-zone-patch/index.js:50:27)

Test Suites: 1 failed, 1 total
Tests:       1 failed, 1 total
Snapshots:   0 total
Time:        4.36s
Ran all test suites.
npm ERR! Test failed.  See above for more details.
>npm测试
>iwp-app@0.0.0测试D:\Users\brock\Source
>开玩笑
失效组件规范ts
我的单元测试
×我的服务测试(41毫秒)
● 我的单元测试›我的服务测试
TypeError:jasmine.createSpyObj不是函数
组件规格:29:25
在ZoneDelegate.Object..ZoneDelegate.invoke(node_modules/zone.js/dist/zone.js:388:26)
在ProxyZoneSpec.Object..ProxyZoneSpec.onInvoke(node_modules/zone.js/dist/proxy.js:128:39)
在ZoneDelegate.Object..ZoneDelegate.invoke(node_modules/zone.js/dist/zone.js:387:32)
在Zone.Object..Zone.run(node_modules/Zone.js/dist/Zone.js:138:43)
在Object.testBody.length(node_modules/jest zone patch/index.js:50:27)
● 我的单元测试›我的服务测试
TypeError:无法读取未定义的属性“myMethodOne”
在创建模板.component.spec.ts:34:22处
在ZoneDelegate.Object..ZoneDelegate.invoke(node_modules/zone.js/dist/zone.js:388:26)
在ProxyZoneSpec.Object..ProxyZoneSpec.onInvoke(node_modules/zone.js/dist/proxy.js:128:39)
在ZoneDelegate.Object..ZoneDelegate.invoke(node_modules/zone.js/dist/zone.js:387:32)
在Zone.Object..Zone.run(node_modules/Zone.js/dist/Zone.js:138:43)
在Object.testBody.length(node_modules/jest zone patch/index.js:50:27)
测试套件:1个失败,共1个
测试:1次失败,共1次
快照:共0个
时间:4.36秒
运行所有测试套件。
npm错误!测试失败。请参见上文了解更多详细信息。

Jest没有像默认jasmine那样的名为createSpyObj()的函数,请访问此链接
这是jest中的自定义createSpyObj函数,或者只需切换到jasmine即可

您似乎正在使用jest,而不是默认的Karma/jasmine配置。请详细说明测试设置。@brock:jonrsharpe所说的是,MWE中可能缺少一些元素。@WillemVanOnsem当然有可能,但由于我没有以正确的方式提问,所以否决投票是令人沮丧的。就像我说的,完全是noob,我对环境一无所知,因为我得到了一个设置步骤的脚本。我是坦率的,但还是有人比你更虔诚地对待我,因为我不知道我不知道什么。这是糟糕的社区管理。而锦上添花的是,可能是同一个人删除了我之前的评论,也批评了否决票。我不管你的代表分数是多少,你可能错了。建设性地处理它。我没有否决这个问题:)。就像俗话所说的“假设是所有问题之母”(这个引语有点难,但我认为这里的语言不合适:)。我认为dowvote更多的是关于你没有通过提供配置来真正对评论做出反应的事实。@WillemVanOnsem:我现在理解为什么“有人”认为应该否决它,但我不同意这种做法。我的问题是关于我对工作环境的了解。与其只说“MCVE”,不如用更好的方法来帮助我改进这个问题。这是双赢的。我会学到一些东西,社区也会得到一个更好的问题。就目前而言,我仍然不知道如何使它成为MCVE。