Angular tohavebeencall()返回未定义的
据我所知,jasmine的Angular tohavebeencall()返回未定义的,angular,typescript,testing,jasmine,Angular,Typescript,Testing,Jasmine,据我所知,jasmine的.tohavebeencall()匹配器返回一个承诺,该承诺在调用函数时得到解决。实际上,对我来说,它返回未定义的: it('should show the first entries', () => { expect(contentfulService.first) .toHaveBeenCalled() .then(() => { expect(component.entries).toBe(entriesMock);
.tohavebeencall()
匹配器返回一个承诺,该承诺在调用函数时得到解决。实际上,对我来说,它返回未定义的:
it('should show the first entries', () => {
expect(contentfulService.first)
.toHaveBeenCalled()
.then(() => {
expect(component.entries).toBe(entriesMock);
});
});
contentfulService的第一个
方法如下:
contentfulService = TestBed.get(ContentfulService);
spyOn(contentfulService, 'first').and.callThrough();
规范没有告诉我:
TypeError:无法读取未定义的属性“then”
我仔细检查了一下。它肯定是返回undefined的
tohavebeencall()
的结果。为什么?我做错什么了吗?tohavencalled
是一种断言方法(如toBe
或toEqual
)。如果没有调用mock并且返回undefined,那么它是一个同步方法,测试失败
通常在测试结束时调用它,以验证代码是否完成了预期任务。它不用于流量控制。
tohaveincalled
是一种断言方法(如toBe
或toEqual
)。如果没有调用mock并且返回undefined,那么它是一个同步方法,测试失败
通常在测试结束时调用它,以验证代码是否完成了预期任务。它不是用来控制流量的。您使用的是哪种版本的茉莉花?您在哪里看到它返回了承诺?在上,我看到它确实应该返回未定义的。vscode向我显示了
@types/jasminewd2
的键入和自动完成结果,而不是@types/jasmine
正确的结果。在jasminewd2打字中,有一个承诺是由于调用了函数。您使用哪个版本的jasmine?您在哪里看到它返回了承诺?在上,我看到它确实应该返回未定义的。vscode向我显示了@types/jasminewd2
的键入和自动完成结果,而不是@types/jasmine
正确的结果。在jasminewd2打字中,由于调用了函数,因此有一个承诺。谢谢-我发现了我认为可以在那里使用承诺结果的问题:Typescript应用了jasminewd2
的打字,而不是jasmine
,因此,vscode的自动完成告诉我,最终会有一个有意义的承诺!在jasminewd2
中,一切都是承诺,因为代码在远程进程上运行。谢谢-我发现了我认为可以在那里使用承诺结果的问题:Typescript应用了jasminewd2
的键入,而不是jasmine
,因此,vscode的自动完成告诉我,最终会有一个有意义的承诺!在jasminewd2
中,一切都是承诺,因为代码在远程进程上运行。