问题标签 [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.
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转换为可读格式:例如,我需要知道
但我只能得到对象值。
javascript - (Appium - JavaScript - Mocha - Promises) 返回“{state:'pending'}”而不是元素文本
我正在尝试访问此元素中的文本。每当我获得函数的返回值或将结果存储在变量中时,我都会在打印到控制台时得到“{state:'pending'}” 。有谁知道我做错了什么?请原谅我的无知。
javascript - 在 Mocha/Chai 中测试被拒绝的承诺
我有一个拒绝承诺的课程:
在我的测试中:
但是,当测试通过时,它会将错误抛出到控制台。
未处理的拒绝错误:嘘...
对于非承诺错误,我使用 bind 来测试以防止错误被抛出,直到 Chai 可以包装和测试:
但是,这不适用于此并返回:
类型错误:[Function] is not a thenable.
对此进行测试的正确方法是什么?
javascript - 从 sinon 存根返回 sinon 存根
我在让一个 sinon 存根返回/解决另一个 sinon 存根时遇到问题。我正在使用 sinon、chai、chai-as-promised 和 mocha。
我正在按顺序执行许多异步任务,我要测试的代码如下所示:
我为此创建存根的尝试如下所示:
“saveit”方法在 Terminal.prototype 中,这就是为什么我需要在那里存根。当我尝试运行它时,我收到错误:
在线:
但是,如果我将终端对象转储到控制台中,它看起来还不错,就像任何其他存根对象一样(至少在我看来是这样)。存根 saveit() 方法可以在测试中“独立”调用。但是,每当我通过 chai 的“return”或 chai-as-promised 的“resolve”方法返回它时,我都会收到此错误。
知道为什么会这样吗?
javascript - 为什么这个 chai-as-promised AssertionError 打印到控制台而不是我的 Mocha 测试运行器?
我很想测试一些将 Promises 与chai-as-promised
and结合使用的代码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 。
任何想法为什么?
编辑:
这是我的测试设置代码:
selenium-webdriver - Selenium-Webdriver w/ Chai 作为 Promised 和 Mocha 未能等待
我有一个使用 Chai-as-Promised 和 Mocha 的简单的带有 Selenium-Webdriver 的咖啡脚本测试,它应该测试我拥有的使用 AJAX 调用在按下登录按钮后进行身份验证的网页:
登录页面的工作方式是,一旦您单击登录,就会进行 AJAX 调用,如果登录成功,页面将通过重定向document.location.href
到 /profile/。
但是,当此脚本运行时,浏览器会打开并转到登录页面,它已正确填写,但一旦单击它就会失败。
我认为正在发生的事情是浏览器没有等待 AJAX 调用和后续重定向的结果,但我认为承诺的整个想法是最终会等到某个超时时间来验证#login-profile
是否需要显示。
我需要明确添加吗?如果是这样,怎么做?
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 网站也没有真正解释插件/框架如何在幕后工作。
有人可以帮我设置吗?
提前致谢。
javascript - 量角器:捕获 AssertionError
我正在使用Protractor和Chai 作为 Promised来创建一个基于 javascript 的测试工具,但我收到了错误
AssertionError: expected 'http://localhost:8888/test/homepage.php' to equal 'http://localhost:8888/test/my_homepage.php'
当我使用此步骤定义检查 url 时:
我想捕捉这个错误以使用不同的回调函数,我该怎么做?我尝试使用 try-catch 块,但它似乎不起作用。我什至无法理解是否AssertionErrors
是由 Protractor 生成的,您能否对此轻轻地给我一个解释?
先感谢您
webdriver-io - webdriverio getText 方法和承诺
嗨,我正在使用带有 webdriverio 的黄瓜(使用 chai 和 chai-as-promised) - 以下测试工作 -
但是如果我使用像 h1 这样的元素而不是 '#copyright' 则它不起作用,所以
不工作,
但是如果我将测试重写为,回调会返回我的文本 -
我想知道有什么区别以及为什么第二个“h1”不适用于 chai-as-promised' 谢谢
unit-testing - 如何检查 Promise 中更新的 Promise 值和属性,但未使用 chai-as-promised 返回
我有一个承诺,它检查我是否被授权(返回真或假)。在该承诺中,当授权为假时,我还将 403 statusCode 添加到我作为参数传递的响应对象中。我正在用 chai-as-promised 测试我的承诺的结果,但我没有设法找到一种方法来在承诺解决后也测试响应的状态代码。