gpt4 book ai didi

node.js - Node 中的 Mocking 依赖(主要用于单元测试)

转载 作者:搜寻专家 更新时间:2023-10-31 23:54:03 24 4
gpt4 key购买 nike

提问前查了一下。

文件结构:

.
|____lib
| |____bar.js
| |____baz.js
| |____foo.js
|____test
| |____bar.js
| |____baz.js
| |____foo.js

用例:

关于上面的文件结构,./lib/foo.js需要./lib/bar.js./lib/bar。 js 需要 ./lib/baz.js


在通过 ./test/foo.js./lib/foo.js 进行单元测试时,我想模拟 ./lib/bar。 js,因此,我只关心 ./lib/foo.js。一旦 ./test/foo.js 中的测试结束,我想重置/取消模拟 ./lib/bar.js

在通过 ./test/bar.js./lib/bar.js 进行单元测试时,我想模拟 ./lib/baz。 js,因此,我只关心 ./lib/baz.js。一旦 ./test/foo.js 中的测试结束,我想重置/取消模拟 ./lib/baz.js

等等等等。


或者换句话说,我想模拟依赖项并在需要时在测试文件中重置。

很可能在测试文件中模拟多次并在测试文件中的所有测试结束后重置 a。

或者我可以通过一些文件级闭包变量来控制本地模拟


下面提到StackOverflow帖子进行了很好的讨论,但我无法得出任何结论。

我遇到了以下模块

few others .


在上面,看起来像mockery解决我的用例,主要是reset/un-mock the mocked dependency .

如何在 proxyquire 中实现同样的目标?


是否有任何其他模块可以解决所述用例?

最佳答案

我使用 deride 的组合和 rewire .

例如测试foo.js我会:

var rewire = require('rewire');
var deride = require('deride');
var Foo = rewire('../lib/foo');
var mockBar, foo;

describe('something', function() {
beforeEach(function() {
mockBar = deride.stub(['barMethod']);
mockBar.setup.barMethod.when('bob').toReturn('Hello bob');
Foo.__set__('bar', mockBar);
foo = new Foo();
});

it('does something', function() {
foo.someMethod('bob');
mockBar.expect.barMethod.called.withArgs(['bob']);
});
});

而且不需要取消设置。

DISCLAIMER: I am one of the authors of deride :)

关于node.js - Node 中的 Mocking 依赖(主要用于单元测试),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30043145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com