RSpec-Rails (基礎篇)(2): 安裝RSpec至Rails


RSpec-Rails教學(基礎篇)全部內容

產生新專案

$ rails new demo-app

Gemfile

group :development, :test do
  gem 'rspec-rails'
end
$ bundle install
$ rails generate rspec:install
$ rails generate scaffold post
$ rake db:migrate
$ rspec

測試當中會有許多不必要的測試檔案,因此從頭來產生一次。

$ rails destroy scaffold post

將RSpec相關的產生器關掉。

/config/application.rb

config.generators do |g|
  g.controller_specs false
  g.view_specs false
  g.helper_specs false
  g.routing_specs false
  g.request_specs false
end

再產生一次scaffold

$ rails generate scaffold post title:string content:text
$ rake db:drop db:create db:migrate
$ rspec

會只剩下model測試

/spec/models/post_spec.rb

require 'rails_helper'

RSpec.describe Post, type: :model do
    it "is accessible" do
        post = Post.create!
        expect(post).to eq(Post.last)
    end

    it "has title and content columns" do
        columns = Post.column_names
        expect(columns).to include("id")
        expect(columns).to include("title")
        expect(columns).to include("content")
        expect(columns).not_to include("user_id")
    end
end