问题标签 [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 投票
1 回答
1025 浏览

node.js - Proxyquire 调用原始文件而不是存根

嗨,我正在尝试使用 proxyquire 在我的控制器中模拟模型。但是由于某种原因,当尝试注入模拟时,正在调用原始文件。

这就是控制器内部需要我的模型的方式:

这就是我的方式,试图存根模型

但是当我运行我的测试时,我得到了这个错误

我的问题是,如果理论上不会调用原始 products.model.js 模块,为什么我会得到这个。

0 投票
0 回答
243 浏览

browserify - 使用 Karma、Browserify 和 Proxyquireify 对 Vuejs 进行单元测试并抛出错误

我一直在使用vue-cli browserify模板,并且一直在做一些单元测试。但是我无法让 proxyquireify 工作。如果您查看测试文件夹,那里有一个测试引用此文件以使用模拟进行测试。但是,每当我按照该示例进行操作时,都会得到以下信息:

所以我想我的问题是双重的。

  1. 有没有人使用 Vue、Browserify 和 Proxyquerify 进行工作设置
  2. 如果没有,是否有人有模拟外部依赖项的工作方式?

去测试:

  1. 通过 vue-cli 安装模板
  2. 编辑 test/unit/Hello.spec.js 以包含如下所示的模拟 dep:此文件
  3. npm test
  4. 您应该收到一个错误。

干杯

0 投票
1 回答
1592 浏览

javascript - proxyquire 不存根方法调用

我试图用它proxyquire来替换我正在测试的模块中的方法调用,但它正在调用该方法,尽管我已经设置了存根。我究竟做错了什么?

formsReducer.test.js:

formsReducer.js:

formsHelper.getFormsByProductId如果testBlueprints通过proxyquire. 我究竟做错了什么?

0 投票
0 回答
157 浏览

javascript - 不替换模块中的每个函数时,proxyquire TypeError

我正在尝试使用proxyquire单元测试我的 Redux 减速器。我需要在我的测试中替换一个函数的功能,但保留另一个函数的原始功能,根据proxyquire's文档这是可能的。

formsReducer.test.js:

formsReducer.js:

我需要替换的功能formsHelper.getFormsByProductId()但保留的原始功能formsHelper.addOrRemoveMnDisclosure()- 正如您在proxyquire块中看到的那样,我只是替换getFormsByProductId()功能。但是,当我这样做时,会出现以下错误:TypeError: _FormsHelper2.default.addOrRemoveMnDisclosure is not a function. 看起来是 babel 或我export default的 for FormHelper 的问题。

FormsHelper 的导出如下所示:

export default class FormsHelper { ...methods and whatnot }.

我该如何解决这个问题?

0 投票
0 回答
162 浏览

node.js - Proxyquire 模块未正确处理对文件所做的更改

我对我的文件“config.js”进行了一些更改,这是要在 nmodule 中测试“file.js”所必需的。

我创建了一个文件 fileTest.js,它有两个描述方法来测试 file.js 的两个不同场景。

  1. config.js 中 currentEnv 为“AAAA”时的测试用例
  2. config.js 中 currentEnv 为“OOOO”时的测试用例

我通常为 currentEnv "AAAA" 及其工作文件创建了测试用例。但是如果 currentEnv 是“OOO”,则要覆盖的部分在 file.js 中没有得到覆盖。对于这两种测试用例,我都必须覆盖 config.js 中的对象。谁能帮我这个。

0 投票
1 回答
1139 浏览

node.js - 我可以在 TypeScript 中使用自定义模块解析函数(如“proxyquire”)代替 require() 吗?

我有一个config.ts将与节点一起运行的 TypeScript 文件:

在其他 TypeScript 文件中,我可以import使用完全类型安全的文件:

现在我想对这个脚本进行单元测试。为了模拟这个脚本require()的依赖关系,我正在使用proxyquire,它让我可以提供我的脚本在调用require(). 这是我的测试可能的样子:

这很好用,除了我的config变量是类型的any,因为我使用proxyquire()的是require(). TypeScript 必须对require()函数进行特殊处理以允许它执行模块解析。有没有办法告诉 TypeScript 编译器也proxyquire()应该进行模块解析,类似于require()

我可以重写config.ts为一个类或让它使用一个接口。然后,我将能够通过导入类/接口定义在我的测试中显式键入变量。但是允许proxyquire()为我隐式输入内容将是更容易的解决方案。

0 投票
0 回答
353 浏览

javascript - proxyquire 与 require.exports = ClassConstructor

如果我有一个导出单个类的模块,我该如何模拟/存根它proxyquire

目前我有以下,这似乎工作,但相当冗长并且没有正确使用proxyquire

一些类.js

我的模块.js

测试我的模块.js

请注意,我对模拟(和测试!)相当陌生,所以我可能会遗漏一些明显的东西,但我希望这proxyquire能解决我的问题本身(而不是我需要使用另一个库或编写上面的代码)。

0 投票
1 回答
165 浏览

javascript - 存根和代理

在使用 proxyquire 后,我在使用 sinon 存根特定函数时遇到问题。

例子:

我知道它不起作用,因为它调用原始的 doStuff 而不是模拟/存根的 doStuff。

0 投票
0 回答
535 浏览

node.js - 使用 proxyquire 跨多个测试文件模拟需求的策略(NodeJS)

我在一些 API 文件中使用了 Redis 缓存,这意味着我需要在测试中模拟一个依赖项。假设我有以下文件结构

假设那些带有 * 的文件redis-connection作为依赖项,然后我可以spec.js使用 Proxyquire 在相应的文件中进行模拟。

简单的。

当我运行所有测试时,问题就来了,Mocha 启动了服务器。所有这些文件都将被带入我的文件中routes.js,但由于 Redis 未运行而失败。我可以看到一些解决方法:

  1. 全局模拟 proxyquire -文档不喜欢这样。
  2. 我当前的解决方法,在每个redis-connection需要的文件中,有条件地导入真实的东西或基本的模拟 if process.env.NODE_ENV === 'test'。然后,如果您需要特定的行为,请将此模拟代理为相关规范文件中更有用的模拟。令人费解,但似乎有效。
  3. redis-connection为每个规范文件中的每次出现创建一个模拟。听起来很难管理。当 Mocha 最初运行服务器时也可能不起作用

有没有其他方法可以解决这个问题?我觉得我的解决方法可能暂时有效,因为我不经常使用这种依赖项,但我更喜欢可扩展的解决方案。

谢谢

0 投票
1 回答
704 浏览

unit-testing - 单元测试:导入的 TypeScript 依赖项使用的模拟文档?

我需要以某种方式模拟该document对象,以便能够对遗留的 TypeScript 类进行单元测试。该类导入另一个类View.tsimportdocument

我的进口链:

controller.ts -> view.ts -> dragula -> crossvent -> 自定义事件

我得到的错误:

ReferenceError:文档未定义

View尝试使用proxyquire模拟,如下所示:

View我的问题是,由于import语句,甚至在初始化之前就会弹出错误。