我正在尝试测试使用inversify进行依赖注入并使用@inject()
修饰参数的类。
@injectable()
export class SaveManager {
constructor(
@inject(INJECTABLE.STORAGE) storage: IStorage, //Uncovered Line: 15
@inject(Configuration) configuration: Configuration //Uncovered Line: 16
) {
this.storage = storage;
this.configuration = configuration;
}
}
但是此类的分支覆盖向我显示:
@inject(INJECTABLE.STORAGE) storage: IStorage, //Uncovered Line: 15
@inject(Configuration) configuration: Configuration //Uncovered Line: 16
这些行不包括在内。
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line
SaveManager.ts | 100 | 66.67 | 100 | 100 | 15,16
在这里我应该测试什么才能达到100%的覆盖率,以及如何测试构造函数参数修饰符?
我知道我可以使用container.get()
,但我也应该能够测试装饰器。
答案 0 :(得分:1)
使用当前版本的软件包依赖项代码覆盖范围可以正常工作。
您可以使用以下任何一种测试,您的SaveManager
的覆盖率将达到100%。
使用InversifyJS解析实例:
test('Resolve SaveManager', () => {
const manager = myContainer.get(SaveManager);
expect(manager).not.toBe(null);
});
直接创建实例:
test('Create new SaveManager', () => {
const storage = myContainer.get<IStorage>(INJECTABLE.STORAGE);
const config = myContainer.get<Configuration>(Configuration);
const manager = new SaveManager(storage, config);
expect(manager).not.toBe(null);
});
两种情况下的结果覆盖范围:
PASS tests/save-manager.test.ts
---------------------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
---------------------|----------|----------|----------|----------|-------------------|
...
save-manager.ts | 100 | 100 | 100 | 100 | |
---------------------|----------|----------|----------|----------|-------------------|
使用的软件包版本: