2015-10-06 22 views
5

Używam podanego parametru rspec i nadal otrzymuję ten błąd.Podany błąd rspec `Then` nie jest dostępny z poziomu przykładu (np. Blok` `` `)

Awaria/Błąd: A { Then nie jest dostępne od wewnątrz przykładzie (przykład bloku it) lub z konstruktami, które działają w ramach przykładu (np before, let itp). Jest dostępny tylko w przykładowej grupie (np. Blok describe lub context).

describe SchoolService do 
    Given(:school) { create(:school_with_applications) } 
    Given(:service) { School.new(@school) } 

    describe 'create_default_programs_and_year_grades!' do 
    it 'checks program size' do 
     When { service.create_default_programs_and_year_grades! } 
     Then { expect(school.programs.size).to eq 3 } 
    end 
    end 
end 

Odpowiedz

3

Komunikat o błędzie mówi wszystko:

Then is not available from within an example (e.g. an it block) or from constructs that run in the scope of an example (e.g. before, let, etc). It is only available on an example group (e.g. a describe or context block). 

proszę uważnie przeczytać komunikat o błędzie. I masz rozwiązanie w samym komunikacie o błędzie.

Nie można używać Then wewnątrz it bloku, można użyć tylko Then albo z describe lub context bloku.

Tak więc, aby rozwiązać swój problem, wystarczy użyć context zamiast it:

describe SchoolService do 
    Given(:school) { create(:school_with_applications) } 
    Given(:service) { School.new(@school) } 

    describe 'create_default_programs_and_year_grades!' do 
    context 'checks program size' do 
     When { service.create_default_programs_and_year_grades! } 
     Then { expect(school.programs.size).to eq 3 } 
    end 
    end 
end 

Zobacz więcej examples here.

+1

Dziękuję, że działało jak czar! – wildrails

+0

Cieszę się, że mogę pomóc! –