【发布时间】:2021-07-28 10:25:47
【问题描述】:
我对开玩笑测试很陌生。我有下面的实现类
import { ExternalObject } from 'external-library';
export class MyClass {
public createInstance(settings : ISettings) : ExternalObject {
const setting1 = settings.getSetting("setting1");
const setting2 = settings.getSetting("setting2");
return new ExternalObject(setting1, setting2);
}
}
我正在尝试测试这个类,我已经能够正确地模拟设置。但是我无法模拟外部对象构造 new ExternalObject(setting1, setting2); 并且我的测试用例失败,因为它试图构造实际对象(由于传递的参数不是实际的有效值而失败)。
describe("Create Instance", () => {
test("Allow creation of external instance", () => {
// not sure if I am using this correctly?
// Aim is to mock out external module and any objects it may need creating
jest.mock('external-library', () => {
return {
ExternalObject: jest.fn().mockImplementation()
}
});
let settings: ISetting = new Settings();
jest.spyOn(settings, "getSetting")
.mockImplementationOnce(() => 'abcd')
.mockImplementationOnce(() => 'xyz')
let myImpl = new MyClass();
let inst = myImpl.createInstance(settings);
// expecting that the instance is created successfully.
expect(inst).toBeTruthy();
});
});
但是我不确定我在这里做错了什么。我确实浏览了文档和其他一些问题,但无法理解我错过了什么。
【问题讨论】:
标签: typescript unit-testing jestjs ts-jest