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

测试用例覆盖率工具似乎存在一个未解决的问题:,除非您使用的是另一个工具。@DipenShah根据该未解决的问题-这取决于版本,但我升级了mocha-chai和所有东西-仍然遇到%分支未覆盖。我甚至尝试注入空/未定义的组合,但它不会下降
 PASS  tests/save-manager.test.ts
---------------------|----------|----------|----------|----------|-------------------|
File                 |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
---------------------|----------|----------|----------|----------|-------------------|
...
 save-manager.ts     |      100 |      100 |      100 |      100 |                   |
---------------------|----------|----------|----------|----------|-------------------|