rspec-rails中的一些匹配器只有在特定的类型才能使用。
请求测试
render_template:
expect(response).to render_template("new")
redirect_to
expect(response).to redirect_to(widgets_path)
请求测试,功能测试:
have_http_status (:error/:missing/:redirect/:success)
在功能测试:
expect(page).to have_http_status(:success)
在请求测试:
expect(response).to have_http_status(201)
expect(response).not_to have_http_status(:created)
Model Specs描述模型的行为,一般基于数据库。
Request Spec
主要是:给了一个request,HTTP的响应response。 也可以叫integration。
请求测试一般在spec/requests, spec/api, spec/integration目录,标志:type => :require
请求测试混入了Rails集成测试的模块Runner中的行为。
很多开发者喜欢FactoryBot/Capybara一起用在请求测试。
require 'rails_helper'
RSpec.describe "home page", :type => :request do
it "displays the user's username after successful login" do
user = FactoryBot.create(:user, :username => "jdoe", :password => "secret")
visit "/login"
fill_in "Username", :with => "jdoe"
fill_in "Password", :with => "secret"
click_button "Log in"
expect(page).to have_selector(".header .username", :text => "jdoe")
end
end
因此没有使用get "/login"这种HTTP verb加路径url的定位.
Feature Specs从外部模仿浏览器。如果使用Capybara,请求测试和功能测试,集成测试都差不多。
rspec-rails中的一些匹配器只有在特定的类型才能使用。的更多相关文章
- Hamcrest匹配器框架
其实在之前的文章中已经使用过 Hamcrest 匹配器框架,本篇文章将系统的介绍它的使用. 为什么要用Hamcrest匹配器框架 Hamcrest是一款软件测试框架, 可以通过现有的匹配器类检查代码中 ...
- Rspec: everyday-rspec实操。FactoryBot预构件 (rspec-expectations gem 查看匹配器) 1-4章
总文档连接: RSpec.info/documentation/ 包括core, expectiation,rails , mock, 点击最新版本,然后右上角搜索class, method. 第3章 ...
- Rails中rspec测试xxx_path调用失败的解决
首先要想生成类似于home_path,about_path之类的方法,必须在路由文件中添加对应方法: match '/help',to:"static_pages#help",vi ...
- Junit 断言 assertThat Hamcrest匹配器
junit断言总结本文参考了http://blog.csdn.net/wangpeng047/article/details/9628449一 junit断言1.JUnit框架用一组assert方法封 ...
- EassyMock实践 自定义参数匹配器
虽然easymock中提供了大量的方法来进行参数匹配,但是对于一些特殊场合比如参数是复杂对象而又不能简单的通过equals()方法来比较,这些现有的参数匹配器就无能为力了.easymock为此提供了I ...
- 前端测试框架Jest系列教程 -- Matchers(匹配器)
写在前面: 匹配器(Matchers)是Jest中非常重要的一个概念,它可以提供很多种方式来让你去验证你所测试的返回值,本文重点介绍几种常用的Matcher,其他的可以通过官网api文档查看. 常用的 ...
- Flask入门之自定义过滤器(匹配器)
1. 动态路由的匹配器? 不知道这种叫啥名,啥用法,暂且叫做匹配器吧. Flask自带的匹配器可以说有四种吧(保守数字,就我学到的) 动态路由本身,可以传任何参数字符串或者数字,如:<user ...
- 【Jest】笔记二:Matchers匹配器
一.前言 什么是匹配器? 我们可以把匹配器看成,testng断言,这么理解就可以了 二.常用的匹配器 test('two plus two is four', () => { expect(2 ...
- uva11019矩阵匹配器D316
#include<iostream> #include<cstring> #include<cstdio> #include<cmath> #inclu ...
随机推荐
- C#生成流水号编码[a-z(不包括i和o) 按0-9 a-z的顺序)]
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; nam ...
- 原来css可以直接覆盖内联style
今天阅读博文新手如何在gdb中存活时,发现行距太小,阅读起来不舒服. 查看了一下html代码,发现是博文内容中的内联style(line-height: normal)覆盖了博客模板的css引起的. ...
- 终于修好了MacBook
之前由于Trackpad故障,陆家嘴苹果店开了维修单,让我在2周内去更换,详见第二次去苹果店维修MacBook. 后来由于购买了AppleCare进行延保,又担心放在那维修时间长,就懒得去更换了. 昨 ...
- 关于#ifndef以及#ifndef WIN32
一般用法是这样的: 这里可以定义如下: #define XXXXX #ifdef XXXXX 这里做一些操作,这些操作只有在XXXX已经被define的情况下才会执行到.一般还可能有else,如 #e ...
- Java Naming and Directory Interface (JNDI) Java 命名和目录接口
https://www.oracle.com/technetwork/java/jndi/index.html Lesson: Overview of JNDI (The Java™ Tutorial ...
- JS原生ajax
原文链接:http://caibaojian.com/ajax-jsonp.html 一.JS原生ajax ajax:一种请求数据的方式,不需要刷新整个页面: ajax的技术核心是 XMLHttpRe ...
- timedatectl — Control the system time and date
timedatectl --help 的执行结果如下: timedatectl [OPTIONS...] COMMAND ... Query or change system time and dat ...
- (2.15)Mysql之SQL基础——开发设计最佳规范
(2.15)Mysql之SQL基础——开发设计最佳规范 关键字:mysql三大范式,mysql sql开发规范 分析: show profile.mysqllsla.mysqldrmpslow.exp ...
- 003-spring cache-JCache (JSR-107) annotations
参看地址:https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#cache-js ...
- PAT 1105 Spiral Matrix[模拟][螺旋矩阵][难]
1105 Spiral Matrix(25 分) This time your job is to fill a sequence of N positive integers into a spir ...