问题标签 [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 - 如何在 ES6 中监视命名导出的子函数
我想监视作为命名导出导出的子函数,但是,我们似乎无法监视它。
假设我有两个函数调用add
和multiply
inoperations.js
并将它们导出为命名导出:
并且测试文件用于sinon-chai
尝试窥探该add
功能:
结果是
但是,如果我像下面这样直接调用operations.add
,它会通过测试:
似乎 sinon-spy 创建了一个新的引用,operations.add
但该multiply
函数仍然使用已经绑定的旧引用。
如果这些函数被命名为导出,那么监视add
这个函数的函数的正确方法是什么?multiply
一般来说,如何监视一个被测试的父函数的子函数,它们都被命名为导出?
[更新]
multiply
函数只是一个例子。我的主要观点是测试父函数是否调用子函数。但是,我不希望该测试依赖于子功能的实现。所以,我只想窥探子函数是否被调用。你可以想象multiply
函数是registerMember
函数,add
函数是sendEmail
函数。(这两个函数都被命名为导出。)
typescript - 如何将模块(sinon,chai)公开为具有正确类型的全局变量?
在 Js 测试中,mocha、chai和sinon通常暴露为全局变量以保存一些import
,通常通过 karma 插件。
安装 mocha 类型很顺利, mocha describe
, it
... 正确地公开为具有正确类型的全局变量。
但是,尝试也将 chai 和 sinon 类型公开为全局 vars ( typings i --global --save-dev sinon
) 会产生一个:
打字错误!消息试图将“sinon”编译为全局模块,但它看起来像一个外部模块。`
我试图自己编写一个类型文件,但我无权访问这些库类型(导入?)...
可能吗 ?我应该怎么做?它会与 sinon-chai 一起使用吗?
reactjs - Expect method to have been called is not fulfilled on "onInput" for a contentEditable element
I have a component that uses contentEditable
as an input method. The part from the component that is of interest is:
The component works fine - it gets into the textChanged
method on user input. The method looks like this:
The problem I'm facing appears when I try to test the input behavior. The setup is done with enzyme, chai, sinon. I'm rendering the component using a simple renderComponent
function, using enzyme's mount
method.
It outputs expected textChanged to have been called at least once, but it was never called. The weird part is, however, if I put a console.log
inside the component's method, it gets there.
What I've tried to make it work
- use
sinon.stub
instead ofspy
, as I though that maybe something in my method doesn't work properly - call it with
view.find('.user-input').simulate('input', {target: {value: "lorem"})
or.simulate('input', {key: 'a'})
If instead of simulating the input I do a viewReact.textChanged()
, it obviously works.
I'm guessing that it's the input method on contentEditable that's causing this. Any suggestions? How can I properly enter text in the onInput
method? (even if it gets in the textChanged
method, the text is empty)
node.js - Mohca 测试失败
我需要在 debug = false 时测试 storeDocument 函数,该函数将调用 createStorageDocument。但是对于我下面的测试代码给出了一个错误'TypeError: Attempted to wrap undefined property createStorageDocument as function'
我究竟做错了什么 ?
而且我更喜欢在 createStorageDocument 函数中存根提取的解决方案,而不是 createStorageDocument 本身,有人可以解释一下怎么做吗?我对 mocha 和 node.js 很陌生
javascript - Chrome 扩展单元测试用 Sinon 抛出“不安全评估”
我正在使用 mocha、chai 和 sinon 对我的 chrome 扩展进行单元测试。当我尝试从方法中存根对象时,我得到:
test-runner.html
:
任何帮助,将不胜感激。提前致谢。
javascript - 如何验证使用 sinon 调用了构造函数
我需要断言是否使用 sinon 调用了构造函数。下面是我如何创建一个间谍。
但是我怎样才能验证这个构造函数是用相关参数调用的呢?下面是构造函数的实际调用方式。
任何帮助将非常感激。
下面是我的代码。
unit-testing - 模拟使用箭头函数作为参数调用的方法
如何使用 Sinon 包存根/模拟方法调用,其中使用箭头函数调用我必须模拟的参数之一?例如
我在 sinon 文档中找不到任何东西,也没有在谷歌搜索几次尝试后找到任何东西。
javascript - “this”引用在 nodeJs 中不起作用
我的 nodeJs 代码中有两种方法,例如
使用方法1测试功能Sinon
,Mocha
我必须使用stub
方法2。为此,它需要将方法 method2 称为
为此的测试代码
使用此测试用例通过,但代码停止工作并出现错误this.method2 is not a function。
有什么办法可以摆脱this
或module.exports
看起来有问题。
如果我错过任何其他信息,请告诉我..
node.js - 如何让 sinon 存根在第 n 次调用时调用另一个函数
我想使用 sinon 存根来异步测试事件发射器。我希望存根在调用后调用回调。
我以为stub.yields
是我想要的,但不是。有没有一种巧妙的方法来做到这一点?
目前,我正在做这样的事情......
它工作得很好,但是,我需要概括它,我认为我可以用 sinon 更有效地做到这一点。但我无法从 sinon docs 中弄清楚如何做到这一点。我错过了什么吗?
感谢罗伯特克莱普,这是解决方案......
unit-testing - 酶:BrowserHistory 函数测试失败
我对单元测试相当陌生。我正在使用 react+redux 并且我已经创建了一个NotFound
页面/组件并且我正在编写它的单元测试。我需要测试一个失败的 onClick 事件。
404.jsx
测试.js
即使这样,它也会给我一个错误Cannot read property 'goBack' of undefined
先感谢您。