【发布时间】:2022-01-11 11:48:17
【问题描述】:
在我的控制器中,当我使用路径作为参数调用该 util 时,我已经导入了安全 util 文件,它返回唯一的 Id。但是如何使用 proxyquire 和 stub 在测试文件中调用这个函数。
controller.ts
import { getSecret } from './util/secrect-util'
export function getId(req: Request, res: Response) {
const path='test/path'
const uniueID = getSecret(path);
console.log(uniueID) // prints testUser01
const url=`https://mytest.com?userid=${uniueID}`;
res.redirect(302,url);
}
test.ts
import { Request, Response } from "express";
import * as sinon from 'sinon';
import * as proxyquire from 'proxyquire';
describe('should redirect', () => {
const validurl:string="https://mytest.com?userid=testUser01";
let res:any;
let req:any
beforeEach(() => {
res = {
redirect:sinon.stub()
}
});
it('should get error with invalid path', () => {
const secPath = sinon.stub().returns('/test/invalidPath');
const urlctl = proxyquire('./controller', {
getSecret: { path: secPath },
});
urlctl.getId(req, res);
sinon.assert.calledWithExactly(
res.redirect,
400,
'inValidpath',
)
});
});
运行测试用例时出错。请帮忙。
【问题讨论】:
-
descripbe在 test.js 中应该是describe -
哦,更新了@Ameer,谢谢。
标签: node.js express unit-testing sinon proxyquire