【问题标题】:Sinon not mocking method诗乃不嘲讽方法
【发布时间】:2017-05-12 15:22:25
【问题描述】:

我想注入构造函数数据库客户端,但是当我运行测试时,mocha 抛出异常,调用的那个方法不是函数。

 export class CustomService {
    constructor(database: any) { 
       database.init().then((res)=>{}));
    }
} 


describe('CRUD service', ()=>{
    it('when i decide save item', ()=>{
        let db =   sinon.mock(new DatabaseService);     

        let instance = new CustomService(db);
        db.expects('init').once();
        db.verify();
    });
});

在控制台中:

TypeError: database.init 不是函数

怎么了?

【问题讨论】:

  • 这可能不是答案,但 new DatabaseService 处缺少圆括号

标签: node.js typescript mocha.js sinon


【解决方案1】:

不要将sinon.mock返回值 传递给您正在测试的代码,而是将您传递给sinon.mock原始对象 传递给您。 sinon.mock 的返回值仅用于设置断言和检查它们。您还需要设置测试中语句的顺序,以便在运行必须满足它们的代码之前设置期望。像这样的:

describe('CRUD service', ()=>{
    it('when i decide save item', ()=>{
        const db = new DatabaseService();
        let mock =   sinon.mock(db);     

        mock.expects('init').once();
        let instance = new CustomService(db);
        mock.verify();
    });
});

【讨论】:

    猜你喜欢
    • 2019-07-07
    • 2013-08-25
    • 2021-09-21
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    相关资源
    最近更新 更多