2016-03-20 17 views
0

test ederken iptal güncelleme, ben yama yapmaya çalışırken bir sorunla karşılaştı TestCase.Yama: güncelleme/mesaj: <strong>ActionController güncelleme</strong> ::: güncelleme</strong> veya <strong>mesaj: Ben Aktif Modeli serializers test çalışıyordu gibi AMS

Aşağıda
[email protected]:~/Fakktion$ rake test 
rake aborted! 
SyntaxError: /home/deovandski/Fakktion/test/controllers/api/v1/genres_controller_test.rb:46: syntax error, unexpected '\n', expecting => 
/home/deovandski/Fakktion/test/controllers/api/v1/genres_controller_test.rb:54: syntax error, unexpected keyword_do_block, expecting keyword_end 
/home/deovandski/Fakktion/test/controllers/api/v1/genres_controller_test.rb:58: syntax error, unexpected keyword_end, expecting end-of-input 
/home/deovandski/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:244:in `rescue in load_dependency' 
/home/deovandski/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:237:in `load_dependency' 
/home/deovandski/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `require' 
/home/deovandski/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/test_unit/sub_test_task.rb:114:in `block (3 levels) in define' 
/home/deovandski/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/test_unit/sub_test_task.rb:114:in `each' 
/home/deovandski/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/test_unit/sub_test_task.rb:114:in `block (2 levels) in define' 
/home/deovandski/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/test_unit/sub_test_task.rb:113:in `each' 
/home/deovandski/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/test_unit/sub_test_task.rb:113:in `block in define' 
/home/deovandski/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/test_unit/sub_test_task.rb:20:in `invoke_rake_task' 
/home/deovandski/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/test_unit/testing.rake:8:in `block in <top (required)>' 
Tasks: TOP => test:run 
(See full trace by running task with --trace) 

söz konusu sadece test durumu ile Türler Denetleyici Testi geçerli: Bu iptal çıkıştır. Kurulum, Teardown ve diğer tüm testler bu link aracılığıyla bulunabilir.

require 'test_helper' 

class Api::V1::GenresControllerTest < ActionController::TestCase 
    test "API - Update a genre" do 
    genre = Genre.find_by name: 'test' 
    genre.name = "mikuchan" 
    patch :update, id: genre.id, ActiveModel::SerializableResource.new(genre).as_json 
    genreUpdated = Genre.find_by name: 'mikuchan' 
    assert_response :success, genreUpdated 
    end 
end 

kök bir => bekliyordum zaman iptal devletler beklenmedik /n olarak yukarıdan patch :update hattını gibi görünüyor. I id: genre.id çıkarılır, ancak, aşağıdaki hata yerine geldi:

Api::V1::GenresControllerTest#test_API_-_Update_a_genre: 
ActionController::UrlGenerationError: No route matches {:action=>"update", :controller=>"api/v1/genres", :data=>{:id=>"980190963", :type=>"genres", :attributes=>{:name=>"mikuchan", :eligibility_counter=>"0", :posts_count=>"0"}, :relationships=>{:posts=>{:data=>[]}}}} 
    test/controllers/api/v1/genres_controller_test.rb:46:in `block in <class:GenresControllerTest>' 

üzerindeki çıkış doğru bir yük gibi görünüyor, bu nedenle sorunun sözdizimi ilgili görünmektedir. Ancak, ben buldum sadece diğer yolu test yazı için doğru yaklaşım nedir genre.save Bu prosedür sadece ActiveRecord kullandığından arıyorum değil ne ... Bunun üzerine

, kullanıyordu: güncelleme işleminde AMS? Ayrıca, adaptör olarak : json_api kullanıyorsam prosedür değişiyor mu?

cevap

0

ayrılan sözdizimi gibi sözdizimi meselesiydi:

require 'test_helper' 

class Api::V1::GenresControllerTest < ActionController::TestCase 
    # Called before every test 
    setup do 
    @request.headers["Content-Type"] = "application/json; charset=utf-8" 
    @testGenre = Genre.new(name: 'TEST', eligibility_counter: 0, posts_count: 0) 
    @testGenre.save 
    end 
    # Called after test 
    def teardown 
    @testGenre = nil 
    @apiGenre = nil 
    @genreSerialized = nil 
    end 
    test "Genres - API - Get Index" do 
    get :index 
    assert_response_schema('genres/index.json') 
    end 
    test "Genres - API - Serializer Validation" do 
    sampleSenre = Genre.new 
    serializer = ActiveModel::Serializer.serializer_for(sampleSenre) 
    assert_equal GenreSerializer, serializer 
    end 
    test "Genres - API - Create 200" do 
    apiGenre = Genre.new(name: 'luka', eligibility_counter: 0, posts_count: 0) 
    assert_difference('Genre.count', +1) do 
     post :create, ActiveModel::SerializableResource.new(apiGenre).as_json 
    end 
    end 
    test "Genres - API - Create 422" do 
     post :create, ActiveModel::SerializableResource.new(@testGenre).as_json 
     assert_response(422) 
    end 
    test "Genres - API - SHOW 200" do 
    get :show, id: @testGenre 
    assert_response_schema('genres/show.json') 
    end 
    test "Genres - API - UPDATE 200" do 
    genre = Genre.find_by name: 'test' 
    genre.name = "mikuchan" 
    tempGenre = ActiveModel::SerializableResource.new(genre).serializable_hash 
    post :update, tempGenre.merge(id: genre) 
    genreUpdated = Genre.find_by name: 'mikuchan' 
    assert_response :success, genreUpdated 
    end 
    test "Genres - API - UPDATE 422" do 
    genre = Genre.find_by name: 'test' 
    genre1 = Genre.find_by name: 'movie' 
    genre.name = "mikuchan" 
    genre1.name = "mikuchan" 
    tempGenre = ActiveModel::SerializableResource.new(genre).serializable_hash 
    tempGenre1 = ActiveModel::SerializableResource.new(genre1).serializable_hash 
    post :update, tempGenre.merge(id: genre) 
    post :update, tempGenre1.merge(id: genre1) 
    assert_response(422) 
    end 
    test "Genres - API - DELETE 200" do 
    assert_difference('Genre.count', -1) do 
     delete :destroy, id: @testGenre 
    end 
    end 
    test "Genres - API - DELETE 422" do 
    genre = Genre.find_by name: 'song' 
    post = Post.first 
    post.genre = genre 
    post.save 
    delete :destroy, id: genre 
    assert_response(422) 
    end 
end 
:

tempResource = ActiveModel::SerializableResource.new(resource).serializable_hash 

post :update, tempResource.merge(id: resource) 

Bu, CREATE GÖSTER, YAMA ve bir kaynak için DELETE için test örneğidir

İlgili konular