【发布时间】:2018-11-28 03:49:31
【问题描述】:
我需要测试我的回调是否被调用了 n 次并且总是返回 true。
这是我在打字稿中的测试回调函数:
const checkBlockTransaction = (block: ILogsBlock) => {
const tx = transactions.find(element => element.block === block.blockNumber);
try {
assert.strictEqual(block.transactions[0].amount, tx.amount);
} catch (e) {
return false;
}
return true;
};
这是我目前失败的测试,因为间谍没有注册任何函数调用
describe('Erc20DepositsWatcher', () => {
it('handles blocks correctly', async () => {
const spy = sinon.spy(checkBlockTransaction);
for (const tx of transactions) {
await deployedContract.methods.transfer(tx.address, tx.amount)
.send({ from: addresses[0] });
}
depositsWatcher.subscribe(checkBlockTransaction);
await depositsWatcher.startBroadcasting();
await depositsWatcher.handleNewBlock(await web3.eth.getBlock('latest'));
assert.equal(spy.callCount, 7);
//sinon.assert.callCount(spy, 7);
//assert(spy.alwaysReturned(true));
});
});
也许有比用 sinon 监视更好的解决方案,但我还没找到
【问题讨论】:
标签: javascript ecmascript-6 sinon chai spy