jbs*_*s87 2 testing unit-testing node.js sinon proxyquire
我有一个模块a
const b = require(./b);
function aGetResult() {
return b.getInfo();
}
Run Code Online (Sandbox Code Playgroud)
模块B
const c = require(./c);
function getInfo() {
return getDetailInfo();
}
function getDetailInfo() {
const result = c.getApiResult();
return result
}
Run Code Online (Sandbox Code Playgroud)
模块C
function getApiResult() {
return api.get(/test/1);
}
Run Code Online (Sandbox Code Playgroud)
我已经为模块 A 编写了一个测试,但遇到了存根依赖项的问题。我只想存根c.getApiResult()而不是b.getInfo()or b.getDetailInfo()。我尝试过有选择地使用存根proxyquire,但遇到了问题。有什么帮助吗?
您应该使用全局覆盖包的要求proxyquire。
a取决于b,b取决于c。现在,您想在测试时模拟间接c 依赖而不是直接依赖。不建议这样做。但无论如何,解决方案如下:ba
例如
\na.js:
const b = require(\'./b\');\n\nfunction aGetResult() {\n return b.getInfo();\n}\n\nexports.aGetResult = aGetResult;\nRun Code Online (Sandbox Code Playgroud)\nb.js:
const c = require(\'./c\');\n\nfunction getInfo() {\n return getDetailInfo();\n}\n\nfunction getDetailInfo() {\n const result = c.getApiResult();\n return result;\n}\n\nmodule.exports = { getInfo };\nRun Code Online (Sandbox Code Playgroud)\nc.js:
const api = {\n get(url) {\n return \'real result\';\n },\n};\n\nfunction getApiResult() {\n return api.get(\'/test/1\');\n}\n\nmodule.exports = { getApiResult };\nRun Code Online (Sandbox Code Playgroud)\na.test.js:
const proxyquire = require(\'proxyquire\');\nconst { expect } = require(\'chai\');\nconst sinon = require(\'sinon\');\n\ndescribe(\'63275147\', () => {\n it(\'should pass\', () => {\n const stubs = {\n \'./c\': {\n getApiResult: sinon.stub().returns(\'stubbed result\'),\n \'@global\': true,\n },\n };\n const a = proxyquire(\'./a\', stubs);\n const actual = a.aGetResult();\n expect(actual).to.be.eq(\'stubbed result\');\n sinon.assert.calledOnce(stubs[\'./c\'].getApiResult);\n });\n});\nRun Code Online (Sandbox Code Playgroud)\n单元测试结果:
\n 63275147\n \xe2\x9c\x93 should pass (2630ms)\n\n\n 1 passing (3s)\n\n----------|---------|----------|---------|---------|-------------------\nFile | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s \n----------|---------|----------|---------|---------|-------------------\nAll files | 83.33 | 100 | 60 | 83.33 | \n a.js | 100 | 100 | 100 | 100 | \n b.js | 100 | 100 | 100 | 100 | \n c.js | 50 | 100 | 0 | 50 | 3-8 \n----------|---------|----------|---------|---------|-------------------\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1660 次 |
| 最近记录: |