问题标签 [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.
node.js - 在同一文件中定义的 Sinon 存根辅助方法
所以我有一个文件,user-database
看起来像这样:
所以我正在使用 Sinon 为外部函数编写单元测试foo
,因此我想存根它调用的函数,findSomething
。我这样做如下:
当我运行测试时,我没有看到我告诉存根返回 this 的对象stub.returns(anObjectIPredefine)
。相反,我实际上让函数findSomething
正常执行并从 dB 中获取数据。有什么明显的我做错了吗?我唯一的猜测是,stub = sinon.stub(user_db, 'findSomething')
对于在与被测试函数相同范围内定义的函数存根,这不是正确的语法。我找不到替代语法是什么。
javascript - 如何检查 $interval 是否在 sinon.js 中使用确切的参数调用
我想测试 $interval 的回调函数是否在一定时间间隔后被调用。但我得到的参数列表是空的。我不知道为什么。
下面是包含 $interval 的代码 -
下面是它的单元测试 -
node.js - 快速路线的诗浓存根不被调用
我目前正在一个 express webapp 上修补 sinon/mocha/chai。我正在尝试验证身份验证是否以这样的方式正常工作,即我让身份验证中间件正常运行并阻止请求,在另一次运行时,我存根中间件函数并让带有附加信息的请求通过。
基本上我的设置如下所示:
带有要存根的函数的helper.js
测试.js
在 express 网络应用 server.js 中
现在的问题是,第一个测试成功但第二个和 afterEach 断言都失败了,这表明存根没有正常工作。
在互联网上搜索时,我发现有人在做非常相似的事情,而且他的工作似乎很好。他的Github 回购
我完全错过了什么吗?
javascript - 用 sinon JS 存根整个模块
这是我正在处理的情况:
在 helpers.js 中
在 barActions.js 中:
我想用 mocha + sinon 测试 addActions.js。在测试中,我想对整个helpers模块进行存根:
但是,我必须先导入助手,然后再将其存根,并且问题出在哪里,我不断收到导入错误,因为助手从 utils 中导入了一些功能,这些功能是网络功能。我想知道在sinon 中是否有jest.mock('path-to-module', factory)等价物,其中 factory 是您自己的模拟实现?
mysql - 如何使用 sinon 模拟承诺的 Mysql 数据以进行单元测试
是否可以使用 sinon for require('promise-mysql')
npm 包在 NodeJS 中模拟承诺查询。由于 Sinon 允许我们模拟和/或存根对象上的方法。假设我想重写 createConnection() 方法,以便无论数据库设置是否正确,它都会返回一个有效对象,我会删除该方法。我可以使用require('mysql')
具有回调的 npm 包来模拟它。
但是,由于require('promise-mysql')
包返回承诺,我不确定如何模拟相同的测试数据。
对于require('mysql')
包,这是完美的
我们怎样才能做到这一点require('promise-mysql');
javascript - Sinon-chai 调用With(new Error()) 并带有确切消息
我需要测试这个功能:
这是我的测试功能:
对于我的断言,我使用的是sinon-chai语法。
尽管我预计它会失败,但该测试正在通过,因为我的代码不会抛出带有错误的消息。
如何测试错误是否引发了正确的消息?
mocha.js - useFakeTimers mocha chai sinon - 测试结果不正确
我正在尝试运行一个测试,我想验证我的帮助文件是否正确运行,如果我有一个过期的令牌,我会收到一个错误回扣并且无法继续。
我有一种感觉,我只能在测试中直接伪造时间,而不是在它之外。问题是,我不想在我的测试中复制 jwt.verify 函数,因为如果我更改实际帮助文件中的代码,那将达不到目的。对这个有帮助吗?
我在用诗乃假装时间。如果我测试一下我现在和时钟滴答后的时间,我确实得到了正确的结果。但由于某种原因,这不适用于另一个文件中的函数。
我的local.js文件
和我的测试文件:
sinon-chai - Sinon-chai 期望 String 包含指定顺序的子字符串
sinon-chai 有没有办法测试一个字符串是否包含指定顺序的子字符串?就像是:
类似于sinon-chai-in-order对 spy 调用所做的事情。
我目前正在使用与此类似的正则表达式匹配:
最初,我正在执行以下操作,但是因为我不确定为什么它在换行符上不匹配:
然而,这些匹配有时很难阅读,而可读性是我使用 sinon-chai 的原因。
javascript - Sinon.JS - 如何从存根中获取参数?
我正在尝试使用Sinon来测试一个看起来有点像这样的JS组件......
测试看起来像这样...
但是我无法越过这条线let bootboxAlertStub = Sinon.stub(Bootbox, 'alert');
,因为我从 Karma 那里得到一个错误,说“应该包装对象的属性”。我也尝试将其包装在 Sinon.test 包装器中并使用 this.stub 但错误更加迟钝。
我已经浏览了 Sinon.JS 文档并在网上搜索过,但我被卡住了。代码工作正常。
我看过这篇类似的帖子 -使用 Sinon.js 存根一个类方法,但并不完全相同。
查看实际的底层引导箱 JavaScript 文件,我有效地尝试存根一个看起来有点像这样的方法(减少)......
然后 JS 文件最后返回导出...
查看一些 Github 帖子,似乎不可能对这些特定调用进行存根,因为底层调用是实用程序函数而不是对象函数。
我通过如下更改我的 Bootbox 包装类来缓解这种情况(以一种可怕的方式)......
这解决了一个问题并引入了另一个问题。虽然我现在可以存根 Bootbox,但当存根时,我无法获得论点....
(来自测试)
这令人沮丧 - 参数作为复杂参数传递,因此“调用的”断言不会削减它。
有什么方法可以让我获得存根的论点吗?
node.js - 使用 sinon 存根库构造函数调用
到目前为止,我一直在使用 sinon 来存根对我的 nodeJS 代码中包含的对象的函数调用。
例如,我使用请求库,因此在我的测试中我可以存根 http 调用,例如:
我现在遇到了一个场景,我所包含的库需要在我的实际代码中这样调用:
我希望能够存根pipe()
对归档程序库的调用,但我认为我需要先存根构造函数调用 - archiver('zip')
?
我进行了搜索,我认为 sinon 的 createStubInstance 可以帮助我,但我不是 100% 确定。
有人可以帮忙吗?谢谢