开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情
大家好,我是阿萨。之前写post的断言时写过一篇文章。[用Postman 如何设置断言?]文章提到过Postman 用chai 写断言。cypresss 其实也是用chai写断言的。
cypress 支持TDD和BDD 2种写法。今天给大家举一些例子。
- should 最常用的就是 文本是否相等。可以比较属性的值,也可以看是否有该属性等。其实就是我们常用的equal, 里面写上它的属性,或者数值等。比如如下例子里 textbox 里的文本,应该等于”Sarah‘s offical account“。
cy.get('.textbox').should('have.text', 'Sarah‘s offical account')
2. and
当一个对象有多个校验点的时候,我们就可以用and。比如一个链接类的文本内容,除了比较文本,还可以看它是否是active的,以及它的属性等。
And 是在should 的基础上,一次性比较多个属性。避免写多行的的断言校验,比如验证link 的class 属性必须是active,同时有一个hred的属性,而且它的链接里必须要包含”Sarah“. 这个关键字。
cy.get('.link').should('have.class', 'active')
.and('have.attr', 'href')
.and('include', 'Sarah')
3.expect
其实是BDD的写法,就是期望值和实际值的比较。 这个就相当于 等号的的左边有右边。expect 的参数写实际值,然后写期望值。
expect(true).to.be.true.
4. assert 和BDD对应的TDD的写法。 assert 就是我们常见的写断言的方式。 可以比较对象类型,比较具体文本是否相等,也可以比较具体的实例里的长度和内容。
var assert = require('chai').assert ,
sarah = 'bar' ,
beverages = { tea: [ 'chai', 'matcha', 'oolong' ] };
assert.typeOf(sarah, 'string');
// without optional message
assert.typeOf(sarah, 'string', 'sarah is a string');
// with optional message
assert.equal(sarah, 'bar', 'sarah equal `bar`');
assert.lengthOf(foo, 3, 'sarah`s value has a length of 3');
assert.lengthOf(beverages.tea, 3, 'beverages has 3 types of tea');
写断言的方法可以参考下chai www.chaijs.com/guide/style…
cypress 写断言相对来说比较简单。今天的内容也相对比较简单。
你学会了吗?
如果觉得阿萨的内容对你有帮助,欢迎围观点赞。