如何模拟集成测试的嵌套依赖关系

sar*_*eeh 5 javascript testing integration-testing mocking node.js

我想为我的服务器创建集成测试。不幸的是,有许多错误情况我无法涵盖,因为这取决于我的项目深处的某些依赖项的失败。

为了更容易地解释这个问题,请考虑这个项目:

主要的:

const dep = require('./dep');

module.exports = () => {
    return dep();
}
Run Code Online (Sandbox Code Playgroud)

依赖性:

const uuid = require('uuid/v4');

module.exports = () => {
    return uuid();
}
Run Code Online (Sandbox Code Playgroud)

测试:

const t = require('tap');

const subject = require('./subject');

t.test('should return 12345', t => {
  // mock uuid/v4 module to return 12345

  const result = subject();

  t.equal(result, '12345');
  t.end();
});
Run Code Online (Sandbox Code Playgroud)

这是 1 级深度依赖情况,但可以考虑dependency为 5 级更深。

所以我来这里有几个问题:

  1. 我怎样才能轻松地模拟项目深处的某些东西?
  2. 也许我应该忽略我无法覆盖的集成测试用例,而只依赖于单元测试?

重要的提示:

我已经尝试过许多模拟库(mock-require、、、、、) ,但它们中没有一个是在考虑集成测试的proxyquire情况下创建的(它们更专注于单元测试)。rewiretestdoublemockery

很想听听您的答案!