用Jest模拟NgInject类

时间:2019-01-17 20:11:52

标签: angularjs typescript unit-testing jestjs

我试图在我的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,所以它不会让我构造。

我觉得我已经接近了,但还不太完全。我如何正确地模拟这种玩笑?请注意,这是对代码内容的简单得多的抽象,实际的类具有更多的依赖关系。

0 个答案:

没有答案