0
我很難理解我做錯了什麼。sinon mock not catching calls
我有一個JS類這樣:
export default class A {
constructor(repository) {
this._repository = repository;
}
async process(date) {
// ...
this._repository.writeToTable(entry);
}
}
,我試圖寫一個測試嘲笑使用資料庫sinon.mock
這是我到目前爲止有:
describe('A',() => {
describe('#process(date)',() => {
it('should work', async() => {
const repository = { writeToTable:() => {} };
const mock = sinon.mock(repository);
const a = new A(repository);
await a.process('2017-06-16');
mock.expects('writeToTable').once();
mock.verify();
});
});
});
但它總是失敗,說
ExpectationError: Expected writeToTable([...]) once (never called)
我檢查過(添加了一個console.log),它調用了我在測試中定義的對象。
我不是超級熟悉ES2015異步/等待建造,但在ES5你需要爲測試函數添加一個參數回調函數,測試完成後將調用該函數。這是隱含的嗎?或者,我想如果把'async'放在函數的前面意味着返回一個Promise,那麼當Mocha支持向測試函數返回Promises時,這應該起作用。 – oligofren