๐ญ Preparing data(let, before)
Factorybot
[RSpec] Factorybot trait, making a complex association data
n350071๐ฏ๐ต ใป Oct 8 '19 ใป 1 min read
#rails
[RSpec] Factorybot transient & trait with argument
n350071๐ฏ๐ต ใป Nov 7 '19 ใป 1 min read
#rails
Search how to use the Factorybot form the project files
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)