【发布时间】:2020-05-29 13:37:44
【问题描述】:
我需要对一个函数进行单元测试:
const readiness = require("./readiness");
function stopProcessNewRequests(){
readiness.setNotReady();
}
这是我的“准备就绪”文件:
const state = require("./state");
const hooks = require("./hooks");
function setReady(){
state.ready = true;
hooks.notifyHook(state.ready);
}
function setNotReady(){
state.ready = false;
hooks.notifyHook(state.ready);
}
module.exports = {
setReady, setNotReady
};
最后是 state.js 文件:
exports.ready = false;
exports.pendingRequests = {};
exports.changeStatusHooks = [];
exports.requestsInProcessNum = 0;
exports.authClient = null;
exports.webOperationsClient = null;
exports.webQueryClient = null;
如您所见,有多个链式导入,我如何模拟它们?我需要我的状态文件具有某些值,以便检查它是否真的发生了变化。 这是我所拥有的,但 state 似乎没有改变,并且测试失败了。
describe('Testing processing new requests:', ()=> {
test('should stop processing new requests:', ()=> {
// jest.mock('../lib/grpc/readiness',);
jest.mock('../lib/grpc/state');
const state = require("../lib/grpc/state");
const { stopProcessNewRequests } = require('../lib/grpc/requestsManager');
state.ready = true;
stopProcessNewRequests();
expect(state.ready).toBeFalsy();
})
})
【问题讨论】:
-
问题是准备文件导入状态,并且在测试时改变了原始文件,而不是我在测试中需要的那个。
标签: javascript node.js unit-testing testing jestjs