Jasmine找不到router对象,因此spyOn函数实际上中断了



我正试图在Karma Jasmine中测试我的路由器。我对这种语言很陌生,所以这可能是一个基本的错误,但我不能让它工作。它会发布一个错误,指出它"找不到一个对象来监视navigate()"。下面是我的代码。

我考虑过在测试平台周围移动它的位置,这并没有改变结果。我已经将路由器测试平台注入到一个对象中,而不是服务中,因为它引用它在错误中寻找对象。我还放了控制台。日志贯穿我的代码在不同的时期,它总是返回为未定义。我对我做错了什么感到困惑,任何见解/想法都会非常感激!

在这里输入图像描述输入图片描述

在测试模块的providers数组中,为Router提供值trueRouter。但是trueRouter从未实例化过,所以它是未定义的。您应该创建一个spy对象,并像下面这样提供:

let router: SpyObj<Router>;
... in the beforeEach ...
router = createSpyObj('Router', ['navigate']);
... in the Testbed providers array ...
{ provide: Router, useValue: router }
...
... in the test: ...
expect(router.navigate).toHaveBeenCalled();

最新更新