库: rspec/rspec-expectations matcher匹配器常用
https://relishapp.com/rspec/rspec-expectations/v/3-7/docs
RSpec.info/documentation/
be_completed是Predicate matchers
expect(actual).to be_xxx #passes if actual.xxx?
RSpec::Expectations lets you express expected outcomes on an object in an example.
Built-in matchers
expect(actual_value).to eq(expected_value)
expect(actual_value).to be >= expected_value 包括>, < , <=, >=
expect(actual_value).to match(/expression/) 正则表达式(expect不支持匹配符号 =~)
expect(array).to all(inner_matcher) #让array通过inner_matcher
如:expect([1,2,3]).to all(be_truthy)
expect(array).to contain_exactly(expected_array) #如果实际的和期待的数组包含相同的元素,则期待成功。不考虑顺序。
contain_exactly等同于match_array
expect(actual).to exist
Collection membership
expect(actual).to include(expected) #actual可以是数组,字符串,hash.
例子:expect([1,2,3]).to include(1,2), expect({:a => "b"}).to include(:a => "b")
include的变型, start_with, end_with
Types/classes
expect(actual).to be_an_instance_of(expected)
# passes if actual.class == expected
expect(actual).to be_a(expected) #passes if actual.kind_of?(expected)
Predicate matchers
expect(actual).to be_xxx #passes if actual.xxx?
expect(actual).to have_xxx(:arg) #passes if actual.has_xxx?(:arg)
expect(actual).to have_attributes(key/value pairs)
Truthiness
expect(actual).to be_truthy/falsy # passes if actual is truthy (not nil or false)
expect(actual).to be true/false #passes if actual == true/false
expect(actual).to be_nil #passes if actual is nil
expect(actual).to_not be_nil #passes if actual is not nil
Ranges
expect(1..10).to cover(3)
expect(actual).to be_between(min, max)
Expecting errors
expect { ... }.to raise_error
expect { ... }.to raise_error(ErrorClass)
expect { ... }.to raise_error("message")
expect { ... }.to raise_error(ErrorClass, "message")
expect可以用于block也可以用于value expectations.
Expecting throws and Yielding没看懂⚠️
Compound Matcher Expressions
通过user,or可以创建混合匹配表达式 。
expect(stoplight.color).to eq("red").or eq("green").or eq("yellow")
expect(alphabet).to start_with("a").and end_with("z")
Composing Matchers
以下matchers接受matchers 作为参数。
- change().by(matcher) #改变sth等于by(匹配的值)
- change{}.from(mather).to(matcher) #改变sth,从matcher_val到mather_val
- include(matcher, matcher)
- include(:key => matcher, :other => mathcer)
‘change’ matcher:
- expect {do_sth}.to change(object, :attribute)
- expect {do_sth}.to change{object.attribute}
- 可以联合 from().to(); by(), by_at_least(), by_at_most()
Relish(n:great enjoyment; 水果蔬菜酱) 案例连接
库: rspec/rspec-expectations matcher匹配器常用的更多相关文章
- Matcher匹配器查找字符串指定内容
public static void main(String[] args) { String s = "我的手机号码是18988888888,曾经用过18987654321,还用过1881 ...
- Rust 1.7.0 匹配器 match 的简介和使用
使用过正則表達式的人应该都知道 matcher ,通过 matcher 匹配器运算正則表達式,完毕一系列的匹配规则. 在Rust 中 没有 switch 语句.matcher 就是 switch 的一 ...
- Rspec: everyday-rspec实操。FactoryBot预构件 (rspec-expectations gem 查看匹配器) 1-4章
总文档连接: RSpec.info/documentation/ 包括core, expectiation,rails , mock, 点击最新版本,然后右上角搜索class, method. 第3章 ...
- Junit 断言 assertThat Hamcrest匹配器
junit断言总结本文参考了http://blog.csdn.net/wangpeng047/article/details/9628449一 junit断言1.JUnit框架用一组assert方法封 ...
- 前端测试框架Jest系列教程 -- Matchers(匹配器)
写在前面: 匹配器(Matchers)是Jest中非常重要的一个概念,它可以提供很多种方式来让你去验证你所测试的返回值,本文重点介绍几种常用的Matcher,其他的可以通过官网api文档查看. 常用的 ...
- Flask入门之自定义过滤器(匹配器)
1. 动态路由的匹配器? 不知道这种叫啥名,啥用法,暂且叫做匹配器吧. Flask自带的匹配器可以说有四种吧(保守数字,就我学到的) 动态路由本身,可以传任何参数字符串或者数字,如:<user ...
- 【Jest】笔记二:Matchers匹配器
一.前言 什么是匹配器? 我们可以把匹配器看成,testng断言,这么理解就可以了 二.常用的匹配器 test('two plus two is four', () => { expect(2 ...
- Mockito 2 参数匹配器
Mockito 通过使用 equals() 这种自然的 Java 样式来校验参数值.有时候,当需要有其他一些灵活性的时候,你可能会要求使用参数匹配(argument matchers). 请参考下面的 ...
- Hamcrest匹配器框架
其实在之前的文章中已经使用过 Hamcrest 匹配器框架,本篇文章将系统的介绍它的使用. 为什么要用Hamcrest匹配器框架 Hamcrest是一款软件测试框架, 可以通过现有的匹配器类检查代码中 ...
随机推荐
- Python: 从字典中提取子集--字典推导
问题: 构造一个字典,它是另外一个字典的子集 answer: 最简单的方式是使用字典推导 eg1: 1. >>>prices = {'ACME': 45.23, 'AAPL': 61 ...
- Oracle提示错误消息ORA-28001: the password has expired
首先,以SYS DBA身份进入sqlpuls 打开sqlpuls SQL->请输入用户名:sys as sysdba SQL->密码: 登录成功以后查询DBA用户状态 SQL->se ...
- bzoj1647 / P1985 [USACO07OPEN]翻转棋
P1985 [USACO07OPEN]翻转棋 其实我们只要枚举第一行的状态,后面的所有状态都是可以唯一确定的. 用二进制枚举灰常方便 #include<iostream> #include ...
- adb shell 命令详解,android, adb logcat
http://www.miui.com/article-275-1.html http://noobjava.iteye.com/blog/1914348 adb shell 命令详解,android ...
- C_Learning (4)
/ 预处理命令 / 宏定义 / 一般形式:#define 宏名 字符串 # 表示这是一条预处理命令 宏名是一个标识符,必须符合C语言标识符的规定 字符串可以是常数.表达式.格式化字符串等 / 注意: ...
- ELK之logstash6.5
首先安装,这里采用rpm安装: # rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch 创建repo文件: [root@no ...
- 20165310 java_blog_week2
2165310 <Java程序设计>第2周学习总结 教材学习内容总结 了解Java变量 重点学习Boolean变量和类型转换规则 学习数组定义.使用方式 区别: int [] a,b [] ...
- JS中的按位非(~)的使用技巧
按位非 按位非操作符由一个波浪线(~)表示,执行按位非的结果就是返回数值的反码 现在让我来看几个例子 例子1 console.log(4); console.log(~4); console.log( ...
- NOIP 华容道
描述 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面,华容道是否根本就无法完成,如果能完成,最少需要多少时间. 小 B 玩的华容道与经典的 ...
- bzoj 4033 树上染色 - 树形动态规划
有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑 色,并将其他的N-K个点染成白色.将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间距离的 ...