问题标签 [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.
javascript - 全局函数上的 sinon 存根
我尝试存根任何全局函数:(function randomNumber(min, max){/*...*/}
)window.randomNumber === randomNumber
但是当我在测试用例中创建存根sinon.stub(window, 'randomNumber')
并模拟结果randomNumber.returns(1);)
时它不起作用并调用原始的'randomNumber'(window.randomNumber !== randomNumber
),为什么?
[编辑]
我的部分代码:https ://plnkr.co/edit/GAaxA3iN8QehDN7HbOc8?p=preview (有趣的是它在浏览器中,在控制台中运行undefined is not a function (evaluating 'randomNumber.onCall(0)')
)和package.json
:
"chai": "^3.5.0",
"karma": "^1.7.0",
"karma-mocha": "^1.3.0",
"karma-phantomjs-launcher": "^1.0.4",
"karma-sinon-chai": "^1.3.1",
"mocha": "^3.4.1",
"phantomjs-prebuilt": "^2.1.14",
"sinon": "^2.2.0",
"sinon-chai": "^2.10.0",
"sinon-stub-promise": "^4.0.0"
backbone.js - 使用 Karma 和 Sinon 时,如何测试绑定到事件总线的 Backbone 模型的方法是否已触发?
当测试一个主干模型的事件已经被 sinon spy 触发时,它错误地错误:expected doSomething to be called once but was called 0 times
,即使它似乎在控制台日志被放入方法的主体时执行。测试功能如下:
我知道要修复,您必须像const spy = sinon.spy(Model.prototype, 'doSomething');
在new Model()
调用之前的行中一样将 sinon spy 放在模型的原型上,但是在放入模型实例时它似乎可以正常工作,如下所示:
好奇为什么它需要在第一个实例中放置在模型的原型上,但在第二个实例上工作?
unit-testing - Firebase 的 Cloud Functions 单元测试:使用 sinon.js 测试/模拟“事务”的“正确方法”是什么
伙计,这个 firebase 单元测试真的让我很兴奋。
我已经阅读了文档并阅读了他们提供的示例,并对我的一些更基本的 Firebase 功能进行了单元测试,但我一直遇到一些问题,我不确定如何验证该transactionUpdated
功能是否传递给refs.transaction
正确地更新了current
对象。
我的挣扎可能最好用他们的child-count
示例代码和我为它编写单元测试的糟糕尝试来说明。
假设我要进行单元测试的函数执行以下操作(直接取自上面的链接):
单元测试代码:
我用我的问题注释了上面的源代码,但我会在这里重申。
我如何验证传递给事务存根的transactionUpdate
回调startingValue
是否会接受我的并将其变异为expectedValue
然后允许我观察该更改并断言它发生了。
这可能是一个非常简单的问题,有一个明显的解决方案,但我对测试 JS 代码非常陌生,因为所有东西都必须被存根,所以它有点学习曲线......感谢任何帮助。
sails.js - 使用 sinon 存根模拟 mocha 测试用例中来自sails.js 控制器的数据
我在一个控制器中有一个函数调用另一个控制器来获取用户会话。我应该如何使用 sinon stub 或 sinon mock 来模拟数据,这样我才能确保Service.USER_ID != uID
用户 controller.js
javascript - 摩卡中的诗农存根不工作
我正在努力解决一个非常微不足道的问题。我能够在所有依赖包中存根函数,它工作得很好,但是当我尝试存根我自己的函数时,我似乎无法让它工作。请参阅以下简单示例:
测试.js:
index.js:
javascript - sinonjs 中 jasmine.createSpy().and.callFake(fn) 的等价物是什么
我正在寻找jasmine.createSpy().and.callFake(fn)
在 sinonjs 中的等价物。
例如:
javascript - 使用带有 Promise 的 sinon 进行单元测试
我有一个函数返回一个Promise
包裹另一个函数的函数,该函数与它自己的承诺/回调实现一起使用,如下所示:
编辑:我可以将上述函数重写为:
我不知道如何对这样的东西进行单元测试?我尝试stub
使用Service
andsinon
来检查它是否被调用,但以下方法不起作用:
任何帮助,将不胜感激。
javascript - 使用 Sinon.JS 测试函数链
如何使用 Sinon.JS 测试如下函数?
我尝试执行以下操作,但无济于事:
基本上来自keycloak-js的 Keycloak 是一个 IIFE,但即使在尝试在窗口Keycloak
引用上存根对象之后,我也无法使其工作。
javascript - 调用 calledOnce 时 Chai 属性无效
我在用 Sinon 和 Chai 编写 JavaScript 测试时遇到问题。我正在尝试检查是否在间谍上调用了一个函数并得到了
“错误:无效的 Chai 属性:calledOnce”
我在另一个具有相同测试依赖项的项目中做同样的事情,没有任何问题。
javascript - 在 Promise 链末尾测试回调调用
我正在处理混合节点样式回调和 Bluebird 承诺的代码,我需要为它编写一些单元测试。
特别是,cache.js
公开了init()
与 Promise 一起使用的函数。然后它被doSomething()
另一个文件(例如index.js
)中的函数调用,该文件又接受必须在init()
.
伪代码如下:
可能的单元测试可能是(仅显示相关代码):
该测试通过,但是将期望更改为not.have.been.calledOnce
也通过,这是错误的。
此外,控制台日志乱序:
我研究了几种可能性,但都没有奏效:
使用 chai-as-promised,例如
expect(callback).to.eventually.have.been.calledOnce;
重构
doSomething()
简单:函数 doSomething(callback) { cache.init() .asCallback(callback); }
谁能帮我理解我做错了什么以及如何解决它?