使用sinon stub在Mocha中导入ES6函数存根

问题描述 投票:2回答:1

我正在尝试根据超级测试库的请求对在Express Router中我的一条路由上调用的函数进行存根。我看到foo函数被正确调用,不幸的是它没有被我在测试中编写的存根函数代替。代码是用ES6编写的,我正在使用babel-registerbabel-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)代替...

node.js mocha babeljs sinon supertest
1个回答
1
投票

这里是解决方法:

© www.soinside.com 2019 - 2024. All rights reserved.