Day17 测试写起乃 - expect() vs expect {}

今天就来说说 expect()expect {} 的差别吧

我们用一个例子来讲

  describe 'Post #create' do
    let(:params_collection) { { collection: { title: '11', description: '222' } } }
    let(:create_collection) { post '/collections', params: params_collection }
    it 'redirect to index when create collection success' do
      create_collection
      expect(Collection.count).to eq 1
    end
  end

当我们打 post create 时会新建出一个 collection 且会期望会使 Collection 的数量增加 1

如果改成 block 的写法就会像是

    it 'redirect to index when create collection success' do
      expect{ create_collection }.to change { Collection.count }.by(1)
    end

其实就是在告诉 expect 欸你 block 里面的create_collection做完之後帮我看一下我 collection 的数量有没有加 1

  describe 'Get #show' do
    let(:collection) { create(:collection) }
    it 'redirect to index when create collection success' do
      expect { get "/collections/1" }.to raise_error(ActiveRecord::RecordNotFound)
  end

也可以用{} 去观察当我打了get "/collections/1" 的时候应该要起error而且是ActiveRecord::RecordNotFound因为我连实体都还没建立出来,怎麽可能会找得到collection

那我们就会知道

expect() => 当你只想验证回传一个值的时候就用 ()
expect{} => 当你期望 block 做事情的这段内会发生哪些变化时就该使用 {}


<<:  Day-2 Python 型态、值、变数与名称

>>:  C# 入门之处理用户的输入

Day1 初探NodeJS

学习新知的第一步是初步了解原理,学习新的开发技术除了原理也要先学习设定环境。 写在最最最前面 虽然N...

Day 26 隐藏小知识

一般来说, 如果要在Odoo原生资料表增加栏位, 只要在py里写好就好, 像是这样 上图是Many2...

[Python 爬虫这样学,一定是大拇指拉!] DAY05 - URL / URN / URI (1)

本篇章主要是先从技术层面来解释 URI 与 URL 及比较少使用到却与生活息息相关的 URN,让读者...

Django 基础篇

django 基础篇 基本工具 env虚拟机 - virtualenvwrapper-win 安装:...

【Day13-计数】如何快速统计资料出现频率?——使用Counter或groupby快速计算元素出现个数

当拿到资料之後,我通常的第一步一定是先看一下这笔资料大致长什麽样子 这个时候有了能统计每个类别出现了...