2009-09-28 8 views
6

J'ai la fonction suivante dans le contrôleurtest rails contrôleur qui répondent à différents formats

def by_xy 
     @obj = BldPoly::find_by_xy(:x => params['x'], :y => params['y']) 

     respond_to do |format| 
      format.html { render :layout => false } 
      format.xml { render :layout => false } 
      format.json { render :layout => false } 
end 

et de planification pour écrire le test automatique de la manière suivante

xml = nil 
get :by_xy, {:x => 4831, :y => 3242, :format => :json} 
assert_nothing_thrown { xml = REXML::Document.new(@response.body) } 

td = REXML::XPath.first(xml, "//result/item") 
assert_equal need_value, td.value 

et je me Achevé en 50ms (Vue: 0, DB: 230) | 406 Non acceptable [http://test.host/search/by_xy/4831/3242.json]

quand je raté le format dans le code de test - tout fonctionne correctement,

comment dois-je passer le test?

Répondre

8

Je l'ai compris, en fait; voici comment il devrait être

get :by_xy, {:x => i[:x], :y => i[:y]}, :format => :json 
+0

Vous ne savez pas si cela a fonctionné à un moment donné, mais cela ne semble plus le cas. –

+0

Le hachage utilisé pour: x, et: y est le problème, retirez le hachage. Donc, vous aurez quelque chose comme: 'get: action, param1: 'a', param2: 'b', format:: json' – Josh

0

Pour rails 5.1, lorsque vous faites un poste, je devais inclure l'attribut format à l'intérieur de mon hachage params

share_params = { 
    email: nil, 
    message: 'Default message.' 
    format: :json 
} 
post image_share_path(@image), params: share_params 
assert_response :unprocessable_entity 

Sinon je recevrais l'erreur ActionController::UnknownFormat intérieur de mon contrôleur de création

def create 
    @image = Image.new(image_params) 
    if @image.save 
    flash[:success] = 'Your image was saved successfully.' 
    redirect_to @image 
    else 
    respond_to do |format| 
     format.json do 
     render json: { @image.to_json }, 
     status: :unprocessable_entity 
     end 
    end 
end 
Questions connexes