Point1
今天在写测试的时候干了一件非常蠢的事情,记录一下,提醒自己:sinon.stub可以mock测试类中的方法,但是如果A方法被同一个类中的B方法调用,当B执行的时候,调用的还是原来的A方法
1 2 3 4 5 6 7 8
| function test1 () { console.log('test1'); }
module.exports = { test1 }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| const test1 = require('./testForSinon1'); function test2Inner() { console.log('_test2Inner'); }
function test2 () { test1.test1(); test2Inner(); console.log('test2'); }
module.exports = { test2, test2Inner }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| const sinon = require('sinon'); const test1 = require('./lib/testForSinon1'); const test2 = require('./lib/testForSinon2');
sinon.stub(test1, 'test1').callsFake(() => { console.log('test1-stub'); })
sinon.stub(test2, 'test2Inner').callsFake(() => { console.log('test2Inner-stub'); })
test2.test2Inner();
test2.test2();
|
Point2
如果你在A中通过如下方法引入一个方法
1 2
| const { b } = require('./B.js');
|
然后在测试中
1 2 3 4 5 6 7
| import B from './B.js';
... ... ...
sinon.stub(B, 'b');
|
这样其实是没有用的,调用的还是b方法的本身