如何在类ES6中模拟JestJS注入的依赖项?

时间:2019-06-27 18:29:27

标签: node.js mocking jestjs

我正在尝试在一个小的NodeJS项目中进行一些依赖倒置。我想模拟个人类的实例,然后将其插入其他类中。

这是针对Lates节点和Jest版本的,我已经阅读了Jest文档,似乎没有什么是我想要的。

class A {

    getStr(): string {
        return "bob";
    }
}

class B {
    private a: A;

    constructor(a: A){
        this.a = a;
    }

    getA(): string {
        return a.getStr();
    }
}

const b = new B(mocked instance of A)

我希望能够与注入的模拟进行交互,并查看它是否在单元测试中被调用。

1 个答案:

答案 0 :(得分:0)

假设您想监视A的功能,可以按照以下步骤进行操作(如果您想继续使用类符号):

class MockA {
    constructor() {
       this.getStr = jest.fn()
    }
}

const mockedA = new MockA()
const b = new B(mockedA)

然后要测试它是否被调用,可以按照以下步骤进行操作:

b.getA();
expect(a.getStr.mock.calls.length).toBe(1)

要创建不带类的模拟,您可以按照以下步骤操作:

const mockedGetStr = jest.fn()
const b = new B({ getStr: mockedGetStr })
b.getA();
expect(a.getStr.mock.calls.length).toBe(1)