こんにちは。
rspec 3.3.2
rails 4.1.4
ruby 2.1.1
でmodelのスペックファイルを作成しています。
作成したスペックを実行したところ、うまくスペックが通らず、何が原因なのかわからないです。
以下に実行結果およびテーブル定義、コードを記載します。
原因がお分かりになる方、なぜスペックが通らないのかお教えいただけないでしょうか?
以下実行結果の、
1)はstockCodeを空のexampleにしているつもりなのですが、なぜstockCodeが1128となるのか?(この1128はどこから来た?)がわからないです。
2)はスペックをraise_errorでエラーが出て合格と書いているつもりなのに、なぜスペックが通らないのかがわからないです。
よろしくお願いします。
実行結果
Failures: 1) Company passed valid param without stockCode should be falsey Failure/Error: it {is_expected.to be_falsey} expected: falsey value got: #<Company stockCode: 1128, companyName: "テスト株式会社"> # ./spec/models/company_spec.rb:17:in `block (4 levels) in <top (required)>' 2) Company passed valid param without companyName Failure/Error: let(:company){ Company.create(params)} ActiveRecord::StatementInvalid: Mysql2::Error: Field 'companyName' doesn't have a default value: INSERT INTO `companies` (`stockCode`) VALUES (1111) # ./spec/models/company_spec.rb:4:in `block (2 levels) in <top (required)>' # ./spec/models/company_spec.rb:6:in `block (2 levels) in <top (required)>' # ./spec/models/company_spec.rb:22:in `block (4 levels) in <top (required)>'
スペックファイル
require 'rails_helper' RSpec.describe Company, type: :model do let(:company){ Company.create(params)} let(:params){ {stockCode: stockCode , companyName: companyName}} subject {company} context 'passed invalid param'do context 'without stockCode' do let(:stockCode){} let(:companyName){'テスト株式会社'} it {is_expected.to be_falsey} end context 'without companyName' do let(:stockCode){1111} let(:companyName){} it {is_expected.to raise_error} end end end
テーブル定義
mysql> desc companies; +-------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+-------+ | stockCode | int(11) | NO | PRI | NULL | | | companyName | varchar(255) | NO | | NULL | | +-------------+--------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql>
モデル
class Company < ActiveRecord::Base has_many :daily_stock_infos , foreign_key: :stockCode ,primary_key: :stockCode has_many :check_stock , foreign_key: :stockCode ,primary_key: :stockCode end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/02 14:36