質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

Q&A

解決済

1回答

649閲覧

aasm + rspec 「initial」のテストがパスしない

pecchan

総合スコア592

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

0グッド

0クリップ

投稿2020/05/14 22:02

gem「aasm」にてuserの状態遷移を実装。
rspecにてテストしてます。

userの新規作成時の状態(初期値)は「unactivated」です。
なのでrspec側で「unactivatedであること」を確認してますがエラーになります。

なぜでしょうか?
分かる方教えてください。

user

ruby

1class User < ApplicationRecord 2 3 include AASM 4 5 aasm do 6 7 state :unactivated, initial: true 8 state :activated 9 state :paused 10 state :stoped 11 state :deleted 12 13 14 event :active do 15 before do 16 self.activated_at = Time.zone.now 17 end 18 transitions from: :unactivated, to: :activated 19 end 20 21 22 event :pause do 23 transitions from: :activated, to: :paused 24 end 25 26 27 event :stop do 28 transitions from: [:activated, :paused], to: :stoped 29 end 30 31 32 event :unsubscribe do 33 transitions from: [:activated, :paused], to: :deleted 34 end 35 36 37 event :reactive do 38 transitions from: [:paused, :stoped, :deleted], to: :activated 39 end 40 41 end 42 43 44 45end 46

rspec

ruby

1require 'rails_helper' 2 3RSpec.describe User, type: :model do 4 5 6 describe '状態遷移のテスト' do 7 8 it "user作成時は「非アクティブ」であること" do 9 user = build(:user) 10 #↓ここでエラー 11 expect(user).to have_state(:unactivated) 12 expect(user).not_to have_state(:activated) 13 end 14 15 16 end 17 18 19 20end

エラーメッセージ

ruby

1Failures: 2 3 1) User 状態遷移のテスト user作成時は「非アクティブ」であること 4 Failure/Error: expect(user).to have_state(:unactivated) 5 expected that :activated would be :unactivated (on :default) 6 # ./spec/models/user_spec.rb:108:in `block (3 levels) in <top (required)>'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

すいません。
Factroybot側でセットしてました。
見落とし、すみません。。。

aasm_state { "activated" }

投稿2020/05/15 06:54

pecchan

総合スコア592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問