Я пытаюсь заглушить функцию, вызываемую на одном из моих маршрутов в экспресс-маршрутизаторе, с запросом из библиотеки супертестов. Я вижу, что функция 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);
контроллер.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
});
});
Любая помощь приветствуется.