Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular tohavebeencall()返回未定义的_Angular_Typescript_Testing_Jasmine - Fatal编程技术网

Angular tohavebeencall()返回未定义的

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);

据我所知,jasmine的
.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
中,一切都是承诺,因为代码在远程进程上运行。