假设以下场景:
Rest client是一个模块,里面有很多中间件;它们本身就是模块。
现在,我们正在尝试创建一个新的中间件,它需要客户端本身来获取/更新客户端输入 url 的元数据。
测试这个中间件,将从 npm 注册表引入客户端的已发布版本,因为中间件在客户端上有一个 devDependency。但我们想为我们的本地客户服务。
此外,已发布的客户端版本不包含此新中间件,因此不允许使用此中间件测试请求管道。
当我们测试中间件本身以发送获取数据的请求时,我们希望使用此中间件启动客户端。
中间件足够聪明,不会为元数据请求元数据,所以它会跳过第二次调用。新流程应该如下图所示:
最佳答案
包装 nodejs 模块加载器,以在测试执行期间请求客户端时返回本地客户端而不是发布的客户端。
describe(()=>{
const localClient = require('../client');
const m = require('module');
const orig = m._load;
before(()=>{
m._load = function(name){
if(name==='client'){
return localClient;
}
return orig.appy(this, arguments)
}
});
after(()=>{
m._load = orig;
});
it('test goes here',()=>{...})
})
关于javascript - 如何测试传递需要自身的nodejs模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55293657/