Javascript 测试构造函数参数
我试图测试一个用于依赖项注入的类,并使用Javascript 测试构造函数参数,javascript,typescript,unit-testing,mocha.js,jestjs,Javascript,Typescript,Unit Testing,Mocha.js,Jestjs,我试图测试一个用于依赖项注入的类,并使用@inject()来修饰参数 @injectable() export class SaveManager { constructor( @inject(INJECTABLE.STORAGE) storage: IStorage, //Uncovered Line: 15 @inject(Configuration) configuration: Configuration //Uncovered Line: 16
@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()
,但我也应该能够测试装饰程序。使用当前版本的包依赖项,代码覆盖率可以正常工作。
您可以使用下面的任何测试,您的SaveManager
将得到100%的覆盖率
使用InversifyJS解析实例:
test('Resolve SaveManager',()=>{
const-manager=myContainer.get(SaveManager);
expect(manager).not.toBe(null);
});
直接创建实例:
test('createnewsavemanager',()=>{
const storage=myContainer.get(可注射的.storage);
const config=myContainer.get(配置);
const manager=new SaveManager(存储,配置);
expect(manager).not.toBe(null);
});
两种情况下的结果覆盖率均为:
使用的软件包版本:
- 打字稿3.5.3
- 倒置5.0.1
- 笑话24.9.0
- 反映元数据0.1.13
PASS tests/save-manager.test.ts
---------------------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
---------------------|----------|----------|----------|----------|-------------------|
...
save-manager.ts | 100 | 100 | 100 | 100 | |
---------------------|----------|----------|----------|----------|-------------------|