2013-07-24 10 views
10

Dopo l'aggiornamento da Rails 3.2 a Rails 4, la mia app funziona, ma i miei test, scritti con l'unità di test, sono un disastro.È ancora possibile utilizzare l'unità di prova nei binari 4?

Si dice che Minitest sia "compatibile" con l'unità di test. Tuttavia, se provo a usare il Minitest (ora in bundle), ci sono una serie di differenze - dai nomi e parametri delle assert * alle (chiaramente) molte altre cose sia grandi che sottili.

Se io invece cerco di evitare Minitest e tentare di mantenere il mio test-unit gioiello nei miei Gemfile, esplode prova rastrello, dicendo

undefined method 'refute_predicate' for class 'ActiveSupport::TestCase' 

Ciò è dovuto aver chiamato

require 'rails/test_help' 

: (

Ho cercato un po 'di tempo ma non ho ancora trovato il modo di continuare a utilizzare l'unità di test. L'unica alternativa sembra essere un (per noi, massiccio) refactoring di il nostro codice di test, poiché qualcosa come l'80% dei nostri test è rotto in qualche modo dalle incompatibilità di Minitest con l'unità di test.

Eppure leggendo cioè http://weblog.rubyonrails.org/2013/6/25/Rails-4-0-final/ e http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#upgrading-from-rails-3-2-to-rails-4-0 trovo alcuna menzione di questo, in sostanza, - mi sento come deve essere manca qualcosa.

È possibile rendere Minitest più compatibile con l'unità di test in modo sistematico? O continuare a utilizzare l'unità di prova in Rails 4?

+0

Puoi essere più specifico su quali incompatibilità hai incontrato? – blowmage

+0

assert_include vs. assert_includes, assert_not_include vs. assert_not_includes, assert_false vs. refute, assert_true vs. assert. Manca il metodo process_with_new_base_test (era necessario avvolgere questo per evitare di macchiare le variabili dell'istanza del controllore tra richieste sui test del controller). Con un mucchio di test ancora rotto, ho rinunciato a questo punto. –

+0

Sareste in grado di eseguire l'associazione remota su questo? Sparami un'email e la configureremo. – blowmage

risposta

3

Stai creando una sottoclasse: Test :: Unità :: TestCase e non ActiveSupport :: TestCase?

Forse provare ad aggiungere minitest_tu_shim al tuo gruppo di test:

https://github.com/seattlerb/minitest_tu_shim

o fare in modo di creare una sottoclasse ActiveSupport :: TestCase

0

Sì Supporto Rails Test :: Unit. Ecco la guida per questo.

http://guides.rubyonrails.org/testing.html

Utilizzare una ricerca globale & sostituire sui vostri casi di test per cambiare i nomi dei metodi.

Ecco un test di integrazione:

class UserFlowsTest < ActionDispatch::IntegrationTest 

Ecco un test di controllo:

class UsersControllerTest < ActionController::TestCase 

Prova rails new app per copiare i collaboratori generate automaticamente e file quadro e vedere esempi.

Problemi correlati