问题标签 [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.

0 投票
0 回答
835 浏览

node.js - 使用 proxyquire 在 3rd 方模块依赖项中存根 require

我正在尝试使用 proxyquire 在第 3 方模块所需的模块中存根 require。

例子:

我的模块需要一个名为“foo”的第三个模块。

该模块依赖于另一个名为“bar”的库,并且在 bar 中有一个我想模拟的要求。这可能吗?

在名为“三”的第 3 方库中:

在酒吧库中:

然后在我的测试中是这样的:

编辑:

我想我想要的是这样的:

但是,如果我在 bar 库中放置一个控制台日志并在需要之后打印出 thingiwanttomock 变量是什么,则它不是我的模拟对象。

在酒吧库中:

proxyquire 真的会改变从依赖库中的 require 语句中提取的内容吗?也许这就是我的困惑所在。

0 投票
1 回答
728 浏览

javascript - 用 proxyquire 模拟 MongoDB

我想 通过在我的测试中使用proxyquire来模拟 MongoDB 依赖项:

每个语句之前:

当我去控制器并执行 console.log(mongoose.isMocked) 时,我得到了 undefined 并且如果我打印 mongoose.model.toString() 似乎 mongoose 方法没有被覆盖。

我跟进了这篇文章并尝试实现相同的逻辑,但我没有得到相同的结果。

任何帮助将不胜感激,谢谢!

0 投票
0 回答
448 浏览

javascript - 使用 Node.js 的 proxyquire 模拟匿名函数?

是否可以使用带有 Node.js 的 proxyquire 来模拟匿名函数?我有一个模块需要模拟,其构造函数是匿名类。是否可以使用 proxyquire 来模拟它,还是有另一种方法可以做到这一点?

我使用 proxyquire 的原因是因为它是我正在为其编写单元测试的文件“必需”的模块。

代码示例和返回的函数如下:

这将返回一个匿名函数,该函数将配置作为参数。

0 投票
2 回答
2095 浏览

javascript - 在 Node.js 中模拟嵌套模块?

我有这些文件:

文件1.js

文件2.js

现在在为 File2 编写单元测试时,是否可以进行mod1模拟,以便我不调用mod1.someFunction()

0 投票
3 回答
1832 浏览

javascript - 节点模块的映射路径,用于单元测试

客户端我使用 SystemJS 将模块路径存根,如下所示

所以require('root-components/foo');会映射到applicationRoot/rootComponents/foo.

问题是,如果我在 Mocha 中运行一个模块require('root-components/foo');,Node 不知道该路径的含义。有没有一种理智的方法可以在 Node 中完成这个路径映射?

Proxyquire 能做到这一点吗?我通读了他们的文档,但没有发现任何迹象表明它是。

这仅用于单元测试,因此我对使用任何类型的派对实用程序的任何解决方案都很满意。

0 投票
1 回答
649 浏览

node.js - Node.js 存根 request.get() 以立即调用回调

我正在尝试测试一个在其中调用request.get()函数的函数。
我正在尝试覆盖回调函数的所有分支。我试图在不将回调函数分离到不同函数的情况下实现它,因为它使用了上闭包的变量。

这是一个示例来说明.. foo.js:

我试图用 sinon 和 proxyquire 来存根它。

foo.spec.js(用 sinon 存根):

foo.spec.js(用 proxyquire 存根):

也没有工作。当我尝试调试时,我从未点击过回调函数,这表明我没有request.get()正确地存根该方法,使其仍然是异步操作。我很感激有人告诉我在两种情况下我做错了什么(sinon 和 proxyquire)以及如何解决它的示例。

0 投票
1 回答
2598 浏览

javascript - 无法分配给 # 的只读属性“.js”

I m building a application and having some troubles dealing with proxyquire and testing.

I have the following test :

import proxyquire from 'proxyquire'
const fetchMock = () => new Pr

I m building a application and having some troubles dealing with proxyquire and testing.

I have the following test :

That fails and throw me the following error :

Cannot asign to read only property '.js' of #

I m trying to simply test that fetch module has been called in my getAll method :

Any idea what's going wrong ?


I think you are checking only $_FILES , also check post data print_r($_POST)

0 投票
1 回答
2657 浏览

node.js - 防止proxyquire调用原始代码?

我正在尝试围绕猫鼬模型进行测试。

我使用proxyquire对其进行整体模拟,但是由于原始文件注册了模型,所以我得到了

既然我需要的一切都已经被 proxyquire 注入了,我怎么能告诉它不加载模型呢?

测试代码:

模型/Test.js:

测试/test.js:

我发现的另一种方法是在 Test 中代理 mongoose,并对其进行模拟以防止注册,但这将是很多代码,而且我还有其他测试,该模型被称为 4 或 5 层深,因此代理查询每个级别真的很麻烦,而我可以模拟更高的功能。

0 投票
1 回答
878 浏览

javascript - 测试节点快速端点和存根 3rd 方 api 调用

我有一个这样的快递应用程序:

服务器.js

post_controller.js

post.js

规范/posts_controller_spec.js

我的目标是消除thirdPartyApi.get(). 我尝试proxyquire将此行添加到posts_controller_spec:

这不起作用,因为 server.js 文件是再次需要 third_party_api 的文件。


可以做这样的事情来测试控制器:

第二个策略感觉不对,因为现在我必须存根reqres现在我绕过了实际app实例。

有没有一种简单的方法可以做到这一点,使用 proxyquire 或其他方式?

0 投票
1 回答
873 浏览

node.js - Node Stub 一个返回对象的方法

我有一个具有一些属性的模块。我正在使用它如下

我必须模拟这个进行测试。下面的代码使用了proxyquire和sinon

上面的代码有效。但是在测试时,get 方法调用返回一个对象。get(min) 返回一个对象。var a = prop.get() 然后 a('min') 返回 3。但是 prop.get('min') 返回一个对象。

如何修改存根以返回 get 调用的值?