问题标签 [sinon-chai]

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 回答
169 浏览

unit-testing - 单元测试蓝鸟承诺绑定功能

我有以下用于bind将上下文绑定到then链的函数。当我尝试测试它时,它会抛出

测试

0 投票
0 回答
3352 浏览

javascript - 对象的Sinon calledWith 和 calledWithMatch 失败编辑:Sinon 监视对象构造函数

我是单元测试新手,正在使用 Mocha、Sinon 和 Chai 测试 NodeJs 代码。问题是我对 stub.calledWith() 的期望在它是一个对象时总是失败,即使测试错误显示两个在语法上相同的对象。

我正在使用 Sinon 存根猫鼬模型的保存方法,并检查是否使用正确的详细信息调用了该存根。

我正在测试的功能:

单元测试

我尝试过的四种方法都失败了,但有一些变化:

我觉得我错过了一些简单的东西来让它工作。

编辑:

所以它很简单(而且非常明显,我当然错过了它)Model.save()是一个实例方法,所以它是在没有参数的情况下调用的。这一定与诗浓断言有关,它显示了两次期望,而不是期望和现实。

我真正需要做的是弄清楚如何对Model构造函数进行存根/监视,以确保使用正确的参数调用它。如果有人知道该怎么做,我真的可以在帮助下做。

0 投票
2 回答
385 浏览

javascript - Chai + Sinon 错误:方法已被包装

我收到错误:

  • TypeError:试图包装已经包装好的ajax
  • 错误:原始 chai.should() 的堆栈跟踪;

    /li>

我遇到了类似的帖子并添加了该after块。仍然出现同样的错误:Sinon.js- Trying to spy on console.log 但它已经被打包

0 投票
2 回答
872 浏览

javascript - 我们如何存根和响应 sinon js 中的特定函数调用

假设我们有一个函数测试,它被多次调用,具有不同的值。我们如何为特定的参数值存根它。像下面这样

我想用 'two' 为调用存根,只是为了验证它是否用 'two' 调用一次,并使用 arg 执行回调以检查函数调用后的状态。

0 投票
0 回答
179 浏览

mocking - 如何在 $("fileupload").files[0] 中模拟 FileList?

1我无法使用 J 查询模拟文件上传。

请参考附件。[实际 FileList 对象]

0 投票
1 回答
621 浏览

unit-testing - Vue.js 单元测试如何使用 Sinon 存根伪造音频上下文?

我正在尝试测试音频插件,但我不知道如何编写正确的期望:

测试正确执行,更新指令(Vue.noise)并执行命令 Vue.noise.start() 但预期失败

使用以下控制台输出

这是插件

VueNoiseGeneratorPlugin.js

这是我的 spec.js

VueNoiseGeneratorPlugin.spec.js

0 投票
1 回答
698 浏览

javascript - 如何将 json 对象与 sinonChai 进行比较?

背景

我正在创建我的测试套件,并将 sinon 用于存根和 chai 作为断言框架。

要将两者结合起来,我使用的是sinon-chai

客观的

我想确保使用正确的参数调用我的存根。为此,我必须遵循以下行:

我正在使用的 json 对象如下:

问题

通过使用http://www.jsondiff.com/,我知道我收到的对象和我正在​​比较的对象是同一个 JSON 对象。

但是无论我做什么,测试总是失败,好像两个对象不同。

为了解决这个问题,我尝试使用chai-json-equal但它也失败了。

到目前为止,唯一的解决方案是callsFake在我的存根上使用,通过手动将 JSON 转换为 Javascript 对象JSON.parse,然后进行比较。这样测试就通过了,但是当我应该能够开始比较两个 JSON 对象时,这个解决方案很糟糕。

我还检查了 sinon-chai 文档,没有任何特殊的方法可以比较 JSON 对象。

问题

  1. 是否可以使用 sinonChai 来比较 JSON 对象?如果是,我该怎么做?
  2. 如何使用 sinon 和 chai 比较 JSON 对象?
0 投票
1 回答
1126 浏览

node.js - 使用 sinon 和 mocha 存根 pg-promise

假设我有以下模块,如 database.js

以及以下模块作为 create.js

我正在尝试在 create.js 上运行单元测试,该测试将测试 db.func 是否以“create”作为第一个参数和“name”作为第二个参数调用,但实际上不需要设置数据库连接(所以测试可以离线运行)。

据我所知,这是可以使用 sinon.JS 之类的库的,所以我尝试创建一个测试并存根 db 对象。

但是,它失败了

很可能是因为我对sinon的接触有限……

如何对 db 函数进行存根(或者我可能需要模拟?),以便我可以测试它以确保调用 db.func ?

0 投票
1 回答
614 浏览

typescript - Vue.JS 单元测试 - 使用 sinon.stub() 后仍在调用原始方法

在对我的组件进行单元测试(使用 TypeScript 和 编写vue-class-component)时,我使用 Sinon 来存根 API 调用。将存根添加到单元测试后,仍在调用原始方法(不返回存根值)。

我试图存根的方法mounted在组件中被调用并设置文本内容。任何帮助将不胜感激,谢谢!

0 投票
0 回答
627 浏览

node.js - 使用 Sinon + Mocha + Nock 模拟带有 headers 的 http.patch

我正在尝试使用 Sinon + Mocha + Nock 模拟 PATCH 请求。

以下是我为 nock 服务提供的代码:

测试执行失败并出现以下错误响应(为便于阅读而格式化:

错误:Nock:与请求不匹配

相关请求负载: