我试图在我的Angular节点Typescript项目中添加Jest单元测试。
对于Angular类,我正在使用nginject
进行依赖注入。我正在尝试在这些类中测试功能,并且正在努力正确地模拟依赖项。请参见下面的示例。
export default class Foo{
Bar: Bar;
constructor(Bar: Bar){
'ngInject';
this.Bar = Bar;
}
CreateFooBar(str : string){
return this.Bar.SomeStringFunc() + str;
}
}
我想测试Foo.CreateFooBar
函数。但是要访问该函数,我需要构造Foo
类。这需要Bar
作为依赖项。
在我的开玩笑的课程中模拟这一点的正确方法是什么。香港专业教育学院试图构造这样的我的模拟和类型不是正确的,所以打字稿抱怨。
import * as barClass from "../Bar.ts";
jest.mock("../Bar.ts");
const mockBar = barClass as jest.mocked<typeof barClass>;
const Bar = mockBar.default;
然后尝试构建我的测试对象。
let target: Foo = new Foo(barClass.mock.instances[0]);
Typescript给我一个错误,指出类型实际上是type of Bar
,所以它不会让我构造。
我觉得我已经接近了,但还不太完全。我如何正确地模拟这种玩笑?请注意,这是对代码内容的简单得多的抽象,实际的类具有更多的依赖关系。