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