Scrivere fuctional test in RoR che supportino chiamate JSON

Se avete dei controller che generano chiamate JSON, vi sarete resi conto che i test non sono in grado di analizzarne i dati.
Il problema puo’ essere ovviato usando ActiveSupport::JSON.decode sul response.body.
Per poter utilizzarlo all’interno di tutte le classi editiamo il file test/test_helper.rb ed all’interno della classe ActionController::TestCase inseriamo il seguente codice:


def json
    ActiveSupport::JSON.decode @response.body
end

A questo punto possiamo procede a scrivere il nuovo test. Supponendo che il nosto metodo index all’interno del controller si presenti come segue:

def index
    respond_to do |format|
        format.html
        format.json { render json: UserDatatable.new(view_context) }
    end
end

Affiancheremo al generico functional test:

test "should get index" do
    get :index
    assert_response :success
    assert_not_nil assigns(:user)
end

il test che copre la parte JSON come segue:

test "should get JSON index " do
    get :index , :format => :json
    assert_response :success
    assert_not_nil assigns(:user).to_json, @response.body
end

Vi invito a leggere la doc sui metodi encode e decode che trovate qui’,

Lascia un Commento

L'indirizzo email non verrĂ  pubblicato. I campi obbligatori sono contrassegnati *