我正在尝试根据超级测试库的请求对在Express Router中我的一条路由上调用的函数进行存根。我看到foo函数被正确调用,不幸的是它没有被我在测试中编写的存根函数代替。代码是用ES6编写的,我正在使用babel-register
和babel-polyfill
使其起作用。
我使用]运行测试脚本>
./node_modules/mocha/bin/mocha server --timeout 10000 --compilers js:babel-register --require babel-polyfill --recursive
router.js
import {foo} from '../controller'; const router = new Router(); router.route(ROUTE).post(foo);
controller.js
export function foo(req, res) { res.status(200).send({ ok: 'ok' }); }
test.js
import request from 'supertest'; import sinon from 'sinon'; import {app} from 'app'; import * as controller from 'controller'; const agent = request.agent(app); describe('Admin routes tests', () => { it('Tests login admin route', async () => { const bar = () => { console.log('bar'); }; sinon.stub(controller, 'foo', bar); const req = await agent .post(ROUTE) .set('Accept', 'application/json'); console.log(stub.calledOnce); // false }); });
任何帮助将不胜感激。
我正在尝试根据超级测试库的请求对在Express Router中我的一条路由上调用的函数进行存根。我看到函数foo被正确调用,不幸的是它没有被存根(stub)代替...
这里是解决方法: