问题标签 [proxyquire]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - 使用 proxyquire 在 3rd 方模块依赖项中存根 require
我正在尝试使用 proxyquire 在第 3 方模块所需的模块中存根 require。
例子:
我的模块需要一个名为“foo”的第三个模块。
该模块依赖于另一个名为“bar”的库,并且在 bar 中有一个我想模拟的要求。这可能吗?
在名为“三”的第 3 方库中:
在酒吧库中:
然后在我的测试中是这样的:
编辑:
我想我想要的是这样的:
但是,如果我在 bar 库中放置一个控制台日志并在需要之后打印出 thingiwanttomock 变量是什么,则它不是我的模拟对象。
在酒吧库中:
proxyquire 真的会改变从依赖库中的 require 语句中提取的内容吗?也许这就是我的困惑所在。
javascript - 用 proxyquire 模拟 MongoDB
我想 通过在我的测试中使用proxyquire来模拟 MongoDB 依赖项:
在每个语句之前:
当我去控制器并执行 console.log(mongoose.isMocked) 时,我得到了 undefined 并且如果我打印 mongoose.model.toString() 似乎 mongoose 方法没有被覆盖。
我跟进了这篇文章并尝试实现相同的逻辑,但我没有得到相同的结果。
任何帮助将不胜感激,谢谢!
javascript - 使用 Node.js 的 proxyquire 模拟匿名函数?
是否可以使用带有 Node.js 的 proxyquire 来模拟匿名函数?我有一个模块需要模拟,其构造函数是匿名类。是否可以使用 proxyquire 来模拟它,还是有另一种方法可以做到这一点?
我使用 proxyquire 的原因是因为它是我正在为其编写单元测试的文件“必需”的模块。
代码示例和返回的函数如下:
这将返回一个匿名函数,该函数将配置作为参数。
javascript - 在 Node.js 中模拟嵌套模块?
我有这些文件:
文件1.js
文件2.js
现在在为 File2 编写单元测试时,是否可以进行mod1
模拟,以便我不调用mod1.someFunction()
?
javascript - 节点模块的映射路径,用于单元测试
客户端我使用 SystemJS 将模块路径存根,如下所示
所以require('root-components/foo');
会映射到applicationRoot/rootComponents/foo
.
问题是,如果我在 Mocha 中运行一个模块require('root-components/foo');
,Node 不知道该路径的含义。有没有一种理智的方法可以在 Node 中完成这个路径映射?
Proxyquire 能做到这一点吗?我通读了他们的文档,但没有发现任何迹象表明它是。
这仅用于单元测试,因此我对使用任何类型的派对实用程序的任何解决方案都很满意。
node.js - Node.js 存根 request.get() 以立即调用回调
我正在尝试测试一个在其中调用request.get()
函数的函数。
我正在尝试覆盖回调函数的所有分支。我试图在不将回调函数分离到不同函数的情况下实现它,因为它使用了上闭包的变量。
这是一个示例来说明.. foo.js:
我试图用 sinon 和 proxyquire 来存根它。
foo.spec.js(用 sinon 存根):
foo.spec.js(用 proxyquire 存根):
也没有工作。当我尝试调试时,我从未点击过回调函数,这表明我没有request.get()
正确地存根该方法,使其仍然是异步操作。我很感激有人告诉我在两种情况下我做错了什么(sinon 和 proxyquire)以及如何解决它的示例。