在执行protractor cucumber之前,所有步骤都显示为通过。
执行我的脚本时,所有步骤在执行我的实际脚本后立即显示为通过控制台.即使在每个步骤中都返回承诺之后. 功能文件: Feature: Running Cucumber with Protractor Scenario: To verify the Search result Given I am on home page When I enter search value Then I verify the search page 步骤定义: var chai = require('chai'); var chaiAsPromised = require('chai-as-promised'); var expect = chai.expect; chai.use(chaiAsPromised); module.exports = function() { this.Given(/^I am on home page$/, f
8 2024-03-29
编程技术问答社区
使用mocha+chai的单元测试总是通过
我尝试将"摩卡"和"柴"用于单位测试,但我对测试结果有问题,它总是通过. 请看看. unittest.spec.ts import PostgresService from "../src/Services/PostgresService" import {expect} from "chai" import 'mocha' describe('Postgres Override Test function', () => { it('should return any number but not zero', async () => { let client = new PostgresService(); let result = await client.getLatestCMD("Servo"); try{ console.log("Type : " + typeof(resul
14 2024-03-29
编程技术问答社区
用Sinon测试JavaScript点击事件
我正在尝试进行一些测试,以便能够更好地了解如何通过摩卡咖啡,柴,辛农和jQuery测试DOM事件.我想检查警报功能是否在单击DIV元素的单击时正确触发.我知道HTML元素的设置是正确的jQuery,但是我不确定如何为下面的代码产生通过测试.特别奇怪的是,我在浏览器中打开HTML文件时会出现对话,因此我知道" $('#thity'").触发('click'click')正在做我期望的事情.我目前正在获取以下" typeError:对象"不是函数' 我的测试文件中的相关部分,tests.js describe('DOM tests - div element', function() { $("body").append(" hello world") $('#thingy').attr('class', 'thingy'); $('#thingy').click(function() { alert( "I've been click
14 2024-03-29
编程技术问答社区
柴静期望成为数组元素之一
有什么方法可以断言string是chai bdd的array元素之一吗?我找不到在 chai api expect("bar").to.be.one.of(["bar", "key"]); 解决方案 围绕: 翻转检查 expect(["bar", "key"]).to.include("bar"); 其他解决方案 更新了2021 下面的答案打印出更好的错误消息 expect(res.status).to.be.oneOf([400, 401]); 错误消息清楚地定义了预期值是什么和返回的值. ,例如 expect(200).to.be.oneOf([400, 401]); 返回 AssertionError: expected 200 to be one of [ 400, 401 ]
10 2024-03-29
编程技术问答社区
测试对象结构是否至少包含其他对象结构的Chai断言
我正在使用摩卡咖啡进行单位测试,并用柴来进行断言. 我想找到一个易于使用的解决方案,以检查对象是否具有比较对象中定义的结构和属性.但是我不需要这些对象完全相等.受测试的受试者至少应包含我测试对象中的所有属性,但它也可能包含当时未在测试的其他属性. 因此,我想测试一个单元以检查其返回的对象是否至少具有名为" foo"的属性,该属性本身至少包含带有值10的属性" bar'这种预期的结果将测试: var expected = {foo: {bar: 10}}; 我打电话给我的单元,并在变量sut中将我的测试对象: var sut = MyUnit.myFunction(); 因此,对于各种空缺,我希望这些结果: // Success. Exact match {foo: {bar: 10}} // Fail. Structure is ok, but property value is wrong. {foo: {bar: 11}} // Fail.
4 2024-03-29
编程技术问答社区
在Javascript ES6中使用Chai(或Should)断言数组(使用Babel)。
我正在尝试测试一个数组,例如: let projects = [ { "id": "55a75be01fa2c7ff76a2ce7a", "title: "Only-Ben", "other_keys": "that can contain objects or arrays" }, { "id": "55a75be01fa2c7ff76a2ce7d", "title: "Only-Thomas" }, { "id": "55a75be01fa2c7ff76a2ce7c", "title: "Other-Project" } ]; 目标是测试数组 包含一个具有键{title: 'Only Ben'} 的元素 不包含具有键{title: 'Only Thomas'} 的元素 我目前正在使用 chai.j
8 2024-03-26
编程技术问答社区
TypeError:期望(...).到.startswith不是功能-Chai和Chakram
我开始编写一些自动化测试(API) 现在我尝试对此端点进行操作: /p> 所以我添加了我的功能 expect(response.body.message).to.startsWith('https://images.dog.ceo/breeds/'); 和测试开始时: var chakram = require('chakram'); var chai = require('chai'); chai.use(require('chai-string')) expect = chai.expect; // Using Expect style expect = chakram.expect; 早些时候我没有任何问题,但是在运行测试后,我得到了"期望开始...": typeError:期望(...).to.startswith不是功能-Chai和Chakram 任何人可以帮我吗? 谢谢 解决方案 您不需要柴弦,您可
8 2024-03-21
编程技术问答社区
NightmareJS同一测试的多个报告
感谢@pipo_dev,我能够解决我在Nightmarejs中进行多次评估的问题,我想知道的一件事是,如果我可以为相同的测试提供多个报告,请以以下示例: describe('test google search results', function() { this.timeout(15000); it('should find the nightmare github link first', function(done) { var nightmare = Nightmare({show: true}) nightmare .goto('http://google.com') .wait(1000) .type('form[action*="/search"] [name=q]', 'github nightmare') .click('form[action*="/search"] [type=subm
10 2024-03-21
编程技术问答社区
应该.在单行中匹配搜索词+变量柴的预期
import 'mocha'; import * as chai from 'chai'; const should = chai.should(); const expect = chai.expect; version = "2022-01-30" let res = "/2022-01-30/images?$top=100&$filter=recordName eq 'R-00005593'" #this works fine. expect(res).to.match(/^\/\d{4}-\d{2}-\d{2}\/images\?\$top=100&\$filter=recordName eq 'R-\d{8}'$/); #but I want to try with a variable version for the date. expect(res).to.match(/^\/${version}\/images\?\$top=100&\$filter=recordN
2 2024-03-21
编程技术问答社区
主张该要素在Cypress中不具有可操作性
如果页面上无法使用一个元素(在这种情况下,由另一个元素覆盖),并且您尝试单击它,则柏树将显示出这样的错误: CypressError: Timed out retrying: cy.click() failed because this element: ... is being covered by another element: 太好了!但是有什么方法可以断言这种情况,也就是无法单击的元素? 这不起作用: should.not.exist - 元素确实存在 should.be.disabled - 该元素未禁用 should.not.be.visible - 可见元素(仅由另一个透明元素覆盖) 使用cy.on('uncaught:exception', ...),因为这不是例外 解决方案 请参阅 click_spec.coffee . it "throws when a non-descendent eleme
12 2024-03-21
编程技术问答社区
异步测试-Mocha和Chai-确保doed()回调被调用。
我正在尝试测试我的容器组件方法.我的容器具有一种异步方法,可以加载所有建议并设置在该州.示例.: loadProposal(proposalId) { return axios .get("http://localhost:9292/api/proposal_drafts/1.json") .then(response => { this.setState({ proposal: Immutable.fromJS(response.data) }) }) } 因此,要测试此方法,我获得了组件实例并调用该方法(嘲笑API URL). it("sets proposal in the state", (done) => { const wrapper = shallow()
14 2024-03-18
编程技术问答社区
如何测试答应返回的函数
我具有以下返回承诺的异步函数. static getAccessToken(env: DeploymentEnv, username: string, password: string): Promise; 现在,这是我为此写的单元测试. it("should be able to get access token",async ()=>{ let accessToken = await IModelHubServiceBusClient.getAccessToken('QA', 'abc@xyz.com', 'abc')!; assert.exists(accessToken); }); 运行时,它会失败的测试,说明以下错误: should be able to get access token: Error: Timeout
12 2024-03-18
编程技术问答社区
当用Mocha/Chai测试异步函数时,如果不能与期望值匹配,总是会导致超时。
例如,我有类似的基本内容: it.only('tests something', (done) => { const result = store.dispatch(fetchSomething()); result.then((data) => { const shouldBe = 'hello'; const current = store.something; expect(current).to.equal(shouldBe); done(); } }); 当current不匹配shouldBe时,而不是说它们不匹配的消息,我会收到通用的超时消息: 错误:超过2000ms的超时.确保已完成()回调 在此测试中被调用. 好像期望在暂停脚本或其他东西.我该如何解决?这使调试几乎不可能. 解决方案 期望不是 脚本,它在击中done回调之前就引发了例外,但是由于它不再在测试方法的上下文中,所以它赢了' t也被测试套
4 2024-03-18
编程技术问答社区
嵌套在定时器内的异步等待--没有返回预期的值
我必须使用摩卡和柴测试测试端点的响应.以下是相同的代码: async function getData (userId) { let response; let interval = setInterval(async () => { response = await superagent.get("localhost:3000/user/details/").query({'user': userId}).type('application/json'); if (response.body["status"] == 'DONE') { clearInterval(interval); response = await superagent.get("localhost:3000/user/details/get").type('appl
10 2024-03-18
编程技术问答社区
使用Mocha/Chai和async/await验证是否抛出了一个异常
我正在努力解决最佳方法来验证在使用异步/等待时,在摩卡测试中拒绝承诺. 这是一个有效的示例,但我不喜欢should.be.rejectedWith返回的承诺需要从测试功能返回才能正确评估.使用异步/等待删除了测试值的要求(如下面的wins()结果),我觉得我很可能会在某个时候忘记返回语句,在这种情况下,测试将始终通过. // Always succeeds function wins() { return new Promise(function(resolve, reject) { resolve('Winner'); }); } // Always fails with an error function fails() { return new Promise(function(resolve, reject) { reject('Contrived Error'); }); } it('throws an error', async
18 2024-03-17
编程技术问答社区
柏树误差找不到链彩.无法建立断言
以下是我的代码,当我使用此柏树测试时,我会遇到错误 柏树误差找不到锁链颜色.无法建立断言. import chai from 'chai'; import chaiColors from 'chai-colors'; chai.use(chaiColors); const toasts = [ { _id: '1', message: 'success toast notification', type: 'success' }, { _id: '2', message: '2 success toast notification', type: 'error' }, { _id: '3', message: 'error toast notification', type: 'error' }, ]; describe('Toast.cy.tsx', () => { it('Toast component renders toasts properly', ()
14 2024-03-17
编程技术问答社区
我如何在Cypress中定义一个自定义断言运算符?
在赛普拉斯测试中,我经常需要检查DOM元素中的文本是否等于预期的测试.但是由于文本周围可能有一些白色空间,所以我不能简单地写下: cy.get('.cell') .should('have.text', 'Hello') 而是我必须写: cy.get('.cell') .then($cell => $cell.text().trim()) .should('eq', 'Hello') 我想定义一个自定义断言操作员,例如have.text.trimmed,允许我这样使用: cy.get('.cell') .should('have.text.trimmed', 'Hello'); ,但我在官方网站上找不到任何有关它的文件.有人会分享一些例子吗? 解决方案 最后,我找到了做到这一点的方法.虽然赛普拉斯没有提供这样的功能,但是由于柏树使用定义柴方法. 注意:由于断言方法text是一种柴法,因此无法定义have.text.trimmed
6 2024-03-17
编程技术问答社区
错误。[$injector:unpr] 未知提供者。$stateProvider <- $state
执行以下单元测试给出"错误:[$ inextor:unpr]未知提供商:$ state-provider describe("Unit tests", function() { var $rootScope, $injector, $state; console.log("hello"); beforeEach(inject(function(_$rootScope_, _$state_, _$injector_, $templateCache) { console.log("hello1"); $rootScope = _$rootScope_; $injector = _$injector_; $state = _$state_; })); describe("states", function() { it("verify state configuration", function() { var config = $state.get("DRaaS"); console.log
14 2024-03-05
编程技术问答社区
比较对象的数组,不受顺序限制
我有2个对象阵列,我必须比较它们,但是对象的顺序 都不重要.我无法对它们进行排序,因为我不会拥有他们的钥匙名称,因为功能必须是通用的.我将获得有关数组的唯一信息是两个数组的对象具有相同数量的键,而这些键具有相同的名称.因此,Array1必须包含与Array2相同的对象. var array1 = [{"key1":"Banana", "key2":"Yammy"}, {"key1":"Broccoli", "key2":"Ew"}]; var array2 = [{"key1":"Broccoli", "key2":"Ew"}, {"key1":"Banana", "key2":"Yammy"}]; 在示例中,array1必须是等于array2. 我尝试使用chai .eql()方法,但它不起作用. 解决方案 您可以array#join分离器上对象的每个值,然后生成新的字符串数组,然后使用array#every和array#includes array#includes
12 2024-03-05
编程技术问答社区
对对象数组中的数值进行柴氏测试
我正在设置结果的测试,以返回一个返回mongo数据库对象的剩余端点. [{_id: 5, title: 'Blah', owner: 'Ted', description: 'something'...}, {_id: 70, title: 'GGG', owner: 'Ted', description: 'something'...}...] 我希望测试验证的是,在返回数组中,它可以连接应返回的特定标题.我没有使用chai/ Chai-Things 似乎都起作用. res.body.savedResults.should.include.something.that.equals({title: 'Blah'})错误之类的东西我假设,因为记录对象还包含其他键和值. 有没有办法让它做我想要的?我只需要验证标题是否在数组中,并且不在乎其他数据可能是什么(即_id). 谢谢 解决方案 这是我通常在测试中所做的: var result = query_r
10 2024-03-04
编程技术问答社区