RSpec & Friends
Thinknetica, 2015
Vladimir Dementyev
RSpec Pareto
80% программистов
!
!
!
20% возмоТностСй RSpec
RSpec CLI
rspec -e β€œinvalid params”
!
rspec -f d
!
rspec --fail-fast
!
rspec --order rand --seed 123
!
rspec --dry-run
!
rspec --init
Бонус #1
# Gemfile
group :test do
gem β€˜fuubar’
end
!
# .rspec
--color
--require spec_helper
--format Fuubar
RSpec Tags
config.before(:each, js: true) { … }
!
it β€œnot implemented function”, :pending do …
!
RSpec.describe Model, type: :model do …
RSpec Tags
config.infer_spec_type_from_file_location!
!
# spec/models/model_spec.rb
describe Model do …
!
# spec/features/my_feature_spec.rb
describe β€œMy Feature” do …
!
ΠΈΠ»ΠΈ
!
# spec/my_acceptance/my_feature_spec.rb
feature β€œMy feature” do …
!
RSpec Tags
fdescribe β€œ#method” do …
!
fcontext β€œwhen …” do …
!
fit β€œmy focused example” do …
!
rspec --tag focus
!
rspec --tag type:feature
!
rspec --tag ~type:feature
RSpec Config
config.filter_run :focus
config.run_all_when_everything_filtered = true
!
!
config.order = :random
Kernel.srand config.seed
!
!
config.filter_rails_from_backtrace!
RSpec 3.3.0 (Nov 15)
--only-failures / --next-failure
--bisect
aggregate_failures
RSpec gems
email_spec
!
json_spec
!
rspec-page-regression
!
lurker
!
with_model
Guard
Guard
guard-rspec
!
guard-bundler
!
guard-spring
!
guard-rails
Guard
https://gist.github.com/palkan/bda5a5e22a625e957aae
More Guard
guard-livereload
!
guard-shell
!
guard-sidekiq
!
guard-migrate
Бонус #2
# Gemfile (MacOS only)
group :development do
gem β€˜terminal-notifier-guard’, require: false
end
Travis CI
Travis CI
https://gist.github.com/palkan/8deb456fcd49a1b27164
RSpec. Part 2
Shared contexts
!
Custom matchers
!
Parallel specs
!
…

RSpec. Part 1