2014-10-21 10 views
8

Czytałem trochę o tym, jak należy organizować kod rspec. Wygląda na to, że "kontekst" jest używany bardziej do stanów obiektów. W twoich słowach, jak opisałbyś, jak używać "opisz" w kodzie rspec?opisać kontra kontekst w rspec. Różnice?

Oto fragment mojego kodu movie_spec.rb:

require_relative 'movie' 

describe Movie do 

    before do 
     @initial_rank = 10 
     @movie = Movie.new("goonies", @initial_rank) 
    end 


    it "has a capitalied title" do 
     expect(@movie.title) == "Goonies" 
    end 


    it "has a string representation" do 
     expect(@movie.to_s).to eq("Goonies has a rank of 10") 
    end 

    it "decreases rank by 1 when given a thumbs down" do 
     @movie.thumbs_down 
     expect(@movie.rank).to eq(@initial_rank - 1) 
    end 

    it "increases rank by 1 when given a thumbs up" do 
     @movie.thumbs_up 
     expect(@movie.rank).to eq(@initial_rank + 1) 
    end 

    context "created with a default rank" do 
     before do 
      @movie = Movie.new("goonies") 
     end 

     it "has a rank of 0" do 
      expect(@movie.rank).to eq(5) 
     end 
    end 

Odpowiedz

11

Nie ma dużej różnicy pomiędzy describe i context. Różnica polega na czytelności. Zwykle używam context, gdy chcę oddzielić specyfikacje na podstawie warunków. Używam describe do oddzielania testowanych metod lub testowanego zachowania.

Jedną z głównych rzeczy, które uległy zmianie w najnowszym RSpec, jest "context" can no longer be used as a top-level method.