问题标签 [chai-as-promised]

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 投票
0 回答
438 浏览

cucumber - 如何按照承诺在 chai 中处理 element.all(locator).each(eachFunction)

我正在使用 Protractor、Cucumber 和 Chai-As-Promise 我尝试测试搜索字段,并验证每个搜索结果是否包含搜索输入值。当使用 Chai 和 Chai-As-Promised 时,我的原型效果很好。
这是测试用例:用户输入“fruit”,将返回一个项目列表:Apple Fruit、Orange Fruit、Pear Fruit。
我有如下内容:

// 在目标文件中 ...

...

"error_message": "ReferenceError: 未定义承诺

1) 控制台日志中的所有内容都显示为 [object object]。
2) 没有 chai 正如所承诺的那样,Each 和“toContain”或 IndexOf 就像一个魅力一样工作,而且非常直截了当。使用 Chai 和 Chai-As-Promised,我无法让每个方法工作,也无法“循环”水果列表并“期望”每个项目。(注意:“预期”被声明为 chai.expect。
这与其他类似的帖子不同:如何使用带 chai-as-promised 的 Protractor 处理一系列承诺

因为其他贴子知道数组中有多少项,并且具有固定值。就我而言,我不知道数组中的条目数。

另外,如何将promise转换为可读格式:例如,我需要知道

但我只能得到对象值。

0 投票
0 回答
735 浏览

javascript - (Appium - JavaScript - Mocha - Promises) 返回“{state:'pending'}”而不是元素文本

我正在尝试访问此元素中的文本。每当我获得函数的返回值或将结果存储在变量中时,我都会在打印到控制台时得到“{state:'pending'}” 。有谁知道我做错了什么?请原谅我的无知。

0 投票
4 回答
30620 浏览

javascript - 在 Mocha/Chai 中测试被拒绝的承诺

我有一个拒绝承诺的课程:

在我的测试中:

但是,当测试通过时,它会将错误抛出到控制台。

未处理的拒绝错误:嘘...

对于非承诺错误,我使用 bind 来测试以防止错误被抛出,直到 Chai 可以包装和测试:

但是,这不适用于此并返回:

类型错误:[Function] is not a thenable.

对此进行测试的正确方法是什么?

0 投票
1 回答
894 浏览

javascript - 从 sinon 存根返回 sinon 存根

我在让一个 sinon 存根返回/解决另一个 sinon 存根时遇到问题。我正在使用 sinon、chai、chai-as-promised 和 mocha。

我正在按顺序执行许多异步任务,我要测试的代码如下所示:

我为此创建存根的尝试如下所示:

“saveit”方法在 Terminal.prototype 中,这就是为什么我需要在那里存根。当我尝试运行它时,我收到错误:

在线:

但是,如果我将终端对象转储到控制台中,它看起来还不错,就像任何其他存根对象一样(至少在我看来是这样)。存根 saveit() 方法可以在测试中“独立”调用。但是,每当我通过 chai 的“return”或 chai-as-promised 的“resolve”方法返回它时,我都会收到此错误。

知道为什么会这样吗?

0 投票
1 回答
1314 浏览

javascript - 为什么这个 chai-as-promised AssertionError 打印到控制台而不是我的 Mocha 测试运行器?

我很想测试一些将 Promises 与chai-as-promisedand结合使用的代码Mocha。我的测试套件还利用fetch-mock来模拟通常使用 Fetch API 发送的 AJAX 请求。

这是我要测试的代码:

在我的最上层中describe,我有这个最初设置我的fetchMock对象的函数。

这是相关的测试代码:

我在调用中定义save路由的原因fetchMock.mock()是我有另一个测试需要save重新定义路由以返回其他内容。

为了确保 chai-as-promised 确实有效并且会通知我测试失败,我写了一个失败的测试promise.should.eventually.be.fulfilled;save这将失败,因为如果响应包含,则返回的 Promise将拒绝Authorization,它确实如此。Chrome 控制台显示 AssertionError message: expected promise to be fulfilled but it was rejected with 'Request failed,但我的 Mochatest-runner.html页面显示此测试通过。出于某种原因,chai-as-promised 无法与 Mocha 正确通信。

如果你想看我的整个项目,请在 Github 上查看这个 repo 。

任何想法为什么?

编辑:

这是我的测试设置代码:

0 投票
1 回答
423 浏览

selenium-webdriver - Selenium-Webdriver w/ Chai 作为 Promised 和 Mocha 未能等待

我有一个使用 Chai-as-Promised 和 Mocha 的简单的带有 Selenium-Webdriver 的咖啡脚本测试,它应该测试我拥有的使用 AJAX 调用在按下登录按钮后进行身份验证的网页:

登录页面的工作方式是,一旦您单击登录,就会进行 AJAX 调用,如果登录成功,页面将通过重定向document.location.href到 /profile/。

但是,当此脚本运行时,浏览器会打开并转到登录页面,它已正确填写,但一旦单击它就会失败。

我认为正在发生的事情是浏览器没有等待 AJAX 调用和后续重定向的结果,但我认为承诺的整个想法是最终会等到某个超时时间来验证#login-profile是否需要显示。

我需要明确添加吗?如果是这样,怎么做?

0 投票
1 回答
1014 浏览

karma-runner - 因果报应与摩卡,柴,柴-as-promised 和 chai-sinon

我正在尝试让我的 Karma 测试套件与 Mocha、Chai、Sinon、Chai-as-promised 和 chai-sinon 一起运行。

它目前仅使用 mocha、chai 和 sinon 框架进行设置。

现在我尝试添加一些额外的 karma 插件,即 karma-chai-sinon 和 karma-chai-as-promised。然后将上面的更改为

在我的单元测试中,我有

但这给了我一个错误'TypeError:'[object Object]'不是一个函数......'但如果我这样做

它按预期工作。

我已经尝试检查 karma 插件代码但无法理解它们,我希望 karma 插件中的某个地方会说“chai.use(chaiAsPromised)”和“chai.use(sinonChai)”但他们没有. Karma 网站也没有真正解释插件/框架如何在幕后工作。

有人可以帮我设置吗?

提前致谢。

0 投票
1 回答
1467 浏览

javascript - 量角器:捕获 AssertionError

我正在使用ProtractorChai 作为 Promised来创建一个基于 javascript 的测试工具,但我收到了错误

AssertionError: expected 'http://localhost:8888/test/homepage.php' to equal 'http://localhost:8888/test/my_homepage.php'

当我使用此步骤定义检查 url 时:

我想捕捉这个错误以使用不同的回调函数,我该怎么做?我尝试使用 try-catch 块,但它似乎不起作用。我什至无法理解是否AssertionErrors是由 Protractor 生成的,您能否对此轻轻地给我一个解释?

先感谢您

0 投票
1 回答
1234 浏览

webdriver-io - webdriverio getText 方法和承诺

嗨,我正在使用带有 webdriverio 的黄瓜(使用 chai 和 chai-as-promised) - 以下测试工作 -

但是如果我使用像 h1 这样的元素而不是 '#copyright' 则它不起作用,所以

不工作,

但是如果我将测试重写为,回调会返回我的文本 -

我想知道有什么区别以及为什么第二个“h1”不适用于 chai-as-promised' 谢谢

0 投票
1 回答
257 浏览

unit-testing - 如何检查 Promise 中更新的 Promise 值和属性,但未使用 chai-as-promised 返回

我有一个承诺,它检查我是否被授权(返回真或假)。在该承诺中,当授权为假时,我还将 403 statusCode 添加到我作为参数传递的响应对象中。我正在用 chai-as-promised 测试我的承诺的结果,但我没有设法找到一种方法来在承诺解决后也测试响应的状态代码。