2015-10-06 7 views
5

Sto usando rspec-dato e continuo a ricevere questo errore.Errore specificato da rspec `Then` non è disponibile all'interno di un esempio (ad esempio un blocco` it`)

Fallimento/Errore: Allora { Then non è disponibile dall'interno di un esempio (per esempio un it blocco) o da costrutti che vengono eseguiti nell'ambito di un esempio (per esempio before, let, ecc). È disponibile solo per un gruppo di esempio (ad esempio un blocco describe o 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 

risposta

3

Il messaggio di errore dice tutto:

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). 

si prega di leggere il messaggio di errore con attenzione. E tu hai la soluzione nel messaggio di errore stesso.

Non è possibile utilizzare Then all'interno di un blocco it, è possibile utilizzare solo Then sia con describe o context blocco.

Così, per risolvere il problema, basta usare context invece di 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 

Tutte examples here.

+1

Grazie, ha funzionato come un fascino! – wildrails

+0

Contento di aver potuto aiutare! –

Problemi correlati