🏭 Preparing data(let, before)
Factorybot

[RSpec] Factorybot trait, making a complex association data
n350071🇯🇵 ・ Oct 8 '19 ・ 1 min read
#rails
🧪 Testing
expect
block needed matcher
it{ expect{something.save}.to change{ SomethingRelation.count }.by(3) }
it{ expect{something.save!}.to raise_error(StandardError) }
Model Spec
Controller/Request Spec
Feature Spec
🧪 Advanced Testing
shared example/context
Stub / Dowble
before{ allow_any_instance_of(ClassName).to receive(:a_method).and_return('great!') }
before{ allow_any_instance_of(ClassName).to receive(:a_method).and_raise(StandardError.new("error")) }
before{ ClassName.any_instance.stub(:a_method).and_return('cool!') }
before{ ClassName.any_instance.stub(:a_method).and_raise('error!') }
😎 Run RSpec
bundle exec rspec
bundel exec rspec spec/models/xxxx_spec.rb ## specify specific file
bundel exec rspec spec/models/xxxx_spec.rb -e status ## specify a test in specific file
Troubleshooting
Sometimes, the test DB is not migrated(updated). If it occurs after you run rake db:rollback
, then try this.
rake db:rollback RAILS_ENV=test
rake db:migrate RAILS_ENV=test
Top comments (0)