问题标签 [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 回答
1027 浏览

config - 使用 sinon 模拟运行时配置值

我在 hapi 服务器启动之前添加了一些配置值。应用程序运行良好,尽管在测试中我不能使用 config.get()。我可以使用proxyquire。所以我想知道

  • “动态”添加配置文件是不好的设计吗?
  • 有没有办法可以在这种情况下使用 config.get() ?
  • 任何替代方法?

    /li>
0 投票
1 回答
930 浏览

javascript - 使用 proxyquire 时,Sinon 存根不工作

我正在为快速 API 编写测试。我proxyquire习惯于stub module.exports = someFunction()依赖类型。

我有一条受保护的路线,所以我曾经proxyquire存根auth中间件。
这个auth中间件正在被存根。

在控制器中,我有一个模型,它从 db 中提取行。我也想把这个存根。
因为这是一种附加到模型的方法UserAddress。我可以直接用sinon.

像下面
let findUserAddressStub = sinon.stub(UserAdress, 'findAll').resolves({ adddre1: "address1", address2: "address2"})

但是上面的代码不起作用。findAll方法没有被存根。

我认为proxyquire是搞乱scopeexpress app

我试图用它proxyquire自己存根。
但我不知道导出对象时如何存根单个方法?

地址.test.js

更新
我也试过下面的代码。但它仍然无法正常工作。

Address.js(控制器)

当用户通过身份验证时,我将 user_id 嵌套到中间件req内部auth并将其传递给路由处理程序。

所以我也在下面尝试

但是,仍然findUserAddressStub没有被调用。

0 投票
0 回答
275 浏览

node.js - Proxyquire 不适用于 TypeScript

我有以下测试

和我想模拟的课程

但是依赖并没有被替换。

我还包括noCallThru() proxyquire是否 可能无法与 TypeScript 一起使用?

0 投票
1 回答
384 浏览

unit-testing - 如何使用 Sinon 和 Proxyquire 模拟 Mongo 查找

我有以下要进行单元测试的中间件类:

我能够模拟 User.findById,配置 jsonwebtoken,但我无法正确存根 Role.find(... 这是我当前使用 Mocha 和 Chai、Sinon 和 Proxyquire 的测试规范

关于如何正确使用 proxyquire 模拟和存根 Role.find 方法的任何内部信息,以便我可以正确地对函数进行单元测试。

0 投票
1 回答
770 浏览

node.js - 如何在 NodeJS 中模拟嵌套依赖项

我有一个模块

模块 B

模块 C

我已经为模块 A 编写了一个测试,但是遇到了存根依赖项的问题。我只想存根c.getApiResult()而不是b.getInfo()or b.getDetailInfo()。我尝试过选择性地存根使用proxyquire,但遇到了问题。有什么帮助吗?

0 投票
0 回答
127 浏览

javascript - 如何存根 google-apis 方法?

我正在使用 Gmail API,现在我尝试gmail.users.threads.list为测试用例存根方法。但它不起作用。

我试过了:

它不能调用存根函数

更新

我发现了问题。问题在于对象的破坏。

下面的代码对我有用。

require现在我很困惑,用and导入有什么区别proxyquire。使用 进行测试时,破坏不会影响proxyquire

0 投票
1 回答
351 浏览

typescript - 在 TypeScript 中使用 proxyquire 和 sinon 存根 adm-zip

我想用玩笑对zip.adapter.ts类进行单元测试。我尝试了很多不同的方法来模拟/存根adm-zip包,但没有任何效果。

我首先尝试了 ts-mock-imports,但如果我尝试模拟 adm-zip,它总是会失败。然后我尝试了 sinon,但它要么无法存根 adm-zip,要么只是没有存根。我最后的手段是将 sinon 与proxyquire结合起来,但这似乎也不起作用....

有人知道为什么这不起作用吗?当测试调用unzip方法时,其中的代码仍然使用真正的 adm-zip 实现......

(我知道单元测试没有多大意义,因为一切都是模拟的,但由于我无法更改的测试覆盖率规则,我必须这样做)

zip.adapter.ts

zip.adapter.spec.ts


更新:

我让我的测试与 Jest 一起工作,但前提是我需要()我的模块。如果我在没有 require() 的情况下使用我的导入,则模拟不起作用。是否可以摆脱 require() 并仅使用导入?

0 投票
0 回答
62 浏览

javascript - Proxyquire 和 Sinon 检查函数是否被调用

我正在尝试在一个名为的文件中编写一个测试,该文件fooTest试图检查文件中是否foo在我调用时调用fooHandler了文件中的函数bar

我已经能够测试bar调用了函数。( barSpy = sinon.spy(),然后将路径和 spy 作为存根添加到 Proxyquire) 但是,现有测试现在正在中断 - 现有测试检查使用 的函数的输出bar,但我认为这spying会弄乱行为。我该如何解决这个问题?

提前致谢!

0 投票
1 回答
461 浏览

node.js - 如何使用 Proxyquire 在 TypeScript 中模拟配置依赖项?

我有一个 config.ts 返回一个对象:

我有一个依赖于 config.ts 的类(../src/models/item.model):

我想编写一些具有不同数量值的测试。默认值为 50(在 config.ts 中设置),但在我的 item.test.ts 中我想使用 100 的值。我试图通过使用 Proxyquire 来实现这一点:

testItem.amount 实际上是 50(所以它仍然使用原始配置文件)。这应该是 100。

我怎样才能让测试通过?

0 投票
1 回答
73 浏览

jquery - 使用 proxyquire 和 sinon.js 的 JQuery 存根 getJSON 函数

我正在尝试使用 sinon.js 存根和 jquery 的功能,getJSONdone我总是收到一个错误,即 .getJSON、done 和 fail 不起作用。failproxyquire

测试

我的要求是测试这两个功能,但我无法做到这一点。我已经花了两天时间,但无法存根 getJSON、done 和 fail 函数。

任何帮助都将受到高度赞赏