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

javascript - Mocha / Chai expect.to.throw 没有捕捉到抛出的错误

我在让 Chai'sexpect.to.throw在我的 node.js 应用程序的测试中工作时遇到问题。测试在抛出的错误上一直失败,但是如果我将测试用例包装在 try 中并捕获并断言捕获的错误,它就可以工作。

expect.to.throw不像我认为的那样工作还是什么?

失败:

0 投票
1 回答
287 浏览

node.js - 为什么回调附加到一个被调用两次的事件?

我正在梳理教程,我很好奇为什么回调被多次调用——在这种情况下是两次。这是我的代码:

有什么见解吗?

0 投票
1 回答
13562 浏览

tdd - 如何重复/循环通过 mocha 测试

我一直在进行一些 mocha/chai 测试,除了在每个“it”测试中放置一个循环并一次又一次地迭代之外,我仍然没有找到一种在许多不同的可能性上运行测试的好方法. 问题是,如果我有数十或数百个测试,我不想一遍又一遍地编写相同的 for 循环。

有没有更优雅的方式来做到这一点?特别是使用不同的测试参数一次循环所有测试的测试?

0 投票
1 回答
1171 浏览

unit-testing - Testing elements with jQuery-Chai

I have a couple of functions that use jQuery. And I'm having trouble making sense of the proper way to test them with jQuery-Chai in Mocha+Chai.

I see the list of assertions in the jQuery-Chai plugin. However, I don't understand where we get the DOM data to run those assertions?

Ideally I want to insert a line of html. Run the function on it. And use the jQuery-Chai assertion to validate.

Can someone help clear up where I would include the fixture to test these functions?

Thanks in advance.

Using: Testem with Mocha+Chai.

0 投票
1 回答
736 浏览

javascript - 测试nodejs和谐生成器方法

假设你有以下 JS 函数:

您可以在带有 ES6 生成器的 node.js 上使用它来等待该操作发生,例如:

为了测试我做了这样的事情,使用 mocha 和 sinon(和 mocha-sinon):

但我得到的只是回调永远不会被调用,因为 addToDB() 在调用 save 的回调之前退出。

你将如何测试它?

0 投票
1 回答
740 浏览

javascript - 使用 chai-as-promised 在已解决的 promise 对象上测试 hasOwnProperty()

我正在尝试运行以下测试:

我试图找出正确的语法来测试返回的User对象是否包含'sessionId'属性。有人知道怎么做吗?

0 投票
1 回答
1006 浏览

testing - Yeoman webapp generator - 如何在浏览器中运行 mocha 测试

我有一些用 mocha/chai 编写的 JS 测试,我想在使用 webapp 生成器搭建的项目中运行它们。

我已将测试放在 Yeoman 结构中的“test”文件夹中,并且测试运行良好。但问题是该grunt test命令仅在控制台中显示测试结果,而不是在浏览器中。

我正在寻找一种运行命令并在浏览器中显示测试的方法。我怎样才能做到这一点?

谢谢你的帮助!

0 投票
1 回答
1614 浏览

javascript - mocha 如何知道事件何时在 $promise 中使用 $broadcast 在控制器 $scope 上触发?

我找不到任何其他满足我需求的问题/答案,所以这里是:

在 AngularJS (1.2.14) 控制器中,我有一个事件侦听器,它在听到事件 ('fetchData') 时执行 ajax 调用以获取一些数据。获取成功后,将广播一个事件(称为“fetchSuccess”),一个指令正在侦听(尽管该部分无关紧要)。

所以,在我的测试中,我想做这样的事情(假设'this.scope'是测试套件中控制器上的一个新 $scope 对象):

但我不清楚如何在断言中监听 $broadcast 事件。我不断收到此错误:AssertionError: expected function (name, args) {...}

需要明确的是,我的问题不在于事件广播器或运行时侦听器的功能;该应用程序按预期工作。问题在于监听测试套件中的事件。

请注意,上面的代码只是此问题所需的必要片段。在我的应用程序中,还有其他变量/方法可以设置/调用,并且这些东西可以正确测试。这意味着,如果我测试是否调用了实际的获取方法,或者是否正确设置了特定变量,则这些测试通过。

我尝试混合和匹配范围变量,甚至通过收听 $broadcast ,scope.$on('fetchSuccess', fn)但似乎没有任何效果。fetchSuccess事件似乎没有发出,或者我没有正确监听它。

在此先感谢,瑞安。

0 投票
1 回答
2063 浏览

javascript - 如何在 Mocha 测试中要求相同的文件

我有config/index.js它根据设置的 NODE_ENV 环境变量返回不同的配置文件。

我正在尝试编写一个简单的测试以确保为每个环境返回正确的配置,但我遇到了一个问题,即实际上只调用了第一个要求,并且同一文件的后续要求正在使用来自的值第一个要求。

我应该如何更改我的测试来解决这个问题?

config/index.js这是我正在尝试测试的(工作正常)的简化版本:

0 投票
1 回答
552 浏览

javascript - 异步实习生测试的异步 xhr 处理程序中的 assert(false) 不会使测试失败

我编写了一个实习生测试,它执行一些相互依赖的 xhr 调用(登录、获取数据)。所以,我已经嵌套了它们,但仍然希望能够chai在我的处理程序中使用断言库。

我发现测试没有正确失败,它总是挂起,最后实习生报告:

这是尽管有一行代码:assert(false, 'Oh no, something went wrong');执行。

从我在断言库中看到的内容来看,它会引发异常,这些异常预计会在调用堆栈的更高位置被捕获,但这种方法不适合异步请求处理程序的调用堆栈。

我可以在代码中此时使用 assert() 风格的函数,还是我被迫拒绝给我的原始 dfd this.async(timeout)

这个问题与Async test doesn't error on fail因为他滥用了 this.async() 中的原始 dfd 不同。我试图不使用它,而是使用 chai 断言库的更高级别的抽象。

我的简化测试模块:

实习生.js:

外壳输出: