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

javascript - 在对 sinon spy 进行断言之前,等待 sinon stubbed promise 解决

我有一个中间件功能,它检查会话令牌以查看用户是否是管理员用户。如果所有检查都通过,该函数不会返回任何内容,而只是调用 next()。

在对作为 Sinon 间谍的 next() 回调进行断言之前,如何等待内部异步 Promise (adminPromise) 解决?测试当前将失败,因为测试中的断言是在 AdminMiddleware.prototype.run 中的承诺解决之前做出的。

功能是:

和测试:

目前我正在包装下面的期望,这将导致测试通过,但看起来像一个黑客。此外,如果它失败,将导致未处理的承诺拒绝错误和超时,因为 done() 没有被调用。

0 投票
1 回答
227 浏览

javascript - 具有多个嵌套函数的 Sinon、Chai 测试用例

我尝试使用 javascript 加载多个外部 js。我有单独的注入逻辑代码。当我加载一个 js 文件时,意味着测试用例工作正常。但是当我尝试加载多个 js 文件时,测试用例失败了。

主.js

测试.js

上面的代码工作正常。但是当我尝试加载多个外部文件时,测试用例失败了。

主.js

测试.js

错误详情:

有任何想法来解决这个问题。

0 投票
0 回答
453 浏览

angularjs - Jasmine - 监视函数内的函数调用

作为测试的新手,我做了一些愚蠢的假设,因此我的测试用例没有运行。

我的拦截器工厂看起来像:

现在要测试相同的内容,我写道:

茉莉花CallThrough() is not working and it's not calling myActionTransformer,这正是我想要测试的。

我越来越undefined is not a constructor (evaluating 'sinon.spy(authorizationInterceptor, 'responseError').andCallThrough()' )

我是新来的。请帮忙解释一下。

0 投票
1 回答
1877 浏览

javascript - 如何使用 Mocha、Chai 和 Sinon 正确测试 Express 控制器方法

我对使用诗乃很陌生。我编写了以下测试,但它失败了,因为它res.status总是以未调用的方式返回。

现在控制器中的方法非常简单。它首先使用sequelizefindOne方法。如果它没有找到匹配的电子邮件,它应该抛出一个 401。这就是它的样子:

当我运行测试时,它确实到达了应该返回状态的 else 语句,但是测试失败了,当我检查日志时,它说res.status从未调用过。

0 投票
1 回答
453 浏览

unit-testing - 模拟/存根是否启用或调试日志?

如何编写允许我验证不可访问属性 ( debugLog) 是否设置为 true 的模拟测试?我是否试图找到一种方法来找到财产的价值?我是否验证console.debug已设置?在这种情况下间谍是否有意义,还是我应该使用存根?

X 级

单元测试

0 投票
0 回答
209 浏览

node.js - 使用 Sinon.js 存根嵌套函数

我有一个嵌套对象->

现在我想存根'methodName'但不能这样做。已尝试在存根上将其退回,但不确定该怎么做。

0 投票
1 回答
878 浏览

javascript - 如何使用 Sinon JS 存根动态导入

我尝试用 sinon js 存根导入,实际上如何做到这一点, import XLSX from 'xlsx' beforeEach(() => sinon.stub(sheetJS).resolve({}))- 对我不起作用,我发现错误resolve is not a function

0 投票
1 回答
81 浏览

javascript - 如何在我的测试类/方法中加载的对象中存根方法?

我们的MEANJS应用程序有一个类 (Eg, CompanyService),它加载CompanyRepo另一个类的对象 (Eg, ) 并调用它的方法。我正在尝试为CompanyService该类编写单元测试,并且需要在方法中存根一个方法CompanyRepo来模拟承诺拒绝。然而,尽管有存根,CompanyService方法调用似乎调用了实际的CompanyRepo方法调用。

代码流程如下,

公司服务方式

单元测试方法

输出

公司服务 isDomainExists 方法 如果存在数据库错误,则应返回公司未注册: AssertionError:预期的承诺被拒绝,但它已通过 { Object ($__, isNew, ...) }

我想我能理解这里发生了什么。companyService 类有一个 require 语句,它加载 companyRepo 类,该类甚至在存根发生之前就被执行。有什么方法可以避免这种情况发生吗?在这种情况下,推荐的最佳做法是什么?

0 投票
2 回答
85 浏览

mocha.js - 如何使用 mocha、chai 和 sinon 证明调用实现回调?

考虑以下 mocha+chai+sinon 测试:

如断言中所述,我预计应该调用间谍。然而,摩卡报告:

用 console.log 替换间谍展示了预期的流程,所以我对为什么 mocha 报告负面感到困惑。

如何更改测试以证明预期的行为?

0 投票
0 回答
57 浏览

node.js - 如何恢复模拟的所有方法?

我正在使用 sinon 创建一个模拟,但它的方法在调用 restore 后没有恢复,当我再次尝试包装它们时出现错误。这就是我正在做的事情:-

但我得到 findOne 已经包装好了