2010-05-26 20 views
17

new eyleminin işlendiğini iddia etmek için nasıl bir sınama yazabilirim?Raylar sınamak: assert render action

def method 
    ... 
    render :action => :new 
end 

aşağıda hatları gibi bir şey arıyorum ama harekat değil şablon, denirdi iddia etmek: Ben yapamam biliyorum

assert_equal layout, @response.layout 
assert_equal format, @request.format 

@response.action

Şimdiden teşekkürler!

Deb'in

cevap

0

görünüşüdür , adlandırılan işlem hale getirir. Bunu deneyin :

@controller.expects(:new) 
+0

Bu eylem yöntemi çağrıldı olduğunu test eder. Bir eylem, seçtiği veya yönlendirdiği herhangi bir görünümü işleyebilir. – jwadsack

8

en aşağıdaki gibi oluşturmak, bir kontrolör eylemi var diyelim:

def create 
    @post = Post.new(params[:post]) 

    respond_to do |format| 
    if @post.save 
     format.html { redirect_to(@post, :notice => 'Post was successfully created.') } 
     format.xml { render :xml => @post, :status => :created, :location => @post } 
    else 
     format.html { render :action => "new" } 
     format.xml { render :xml => @post.errors, :status => :unprocessable_entity } 
    end 
    end 
end 

Ve burada standart İskele 'gönderiler # yeni' görünümü

<h1>New post</h1> 

<% form_for(@post) do |f| %> 
<%= f.error_messages %> 
...... # just to show, it's bigger.... 

Şimdi, bir Mesaj başarıyla oluşturulduysa, yeniden yönlendirilmek istiyorsunuz, ancak başarısız olursa, yalnızca YENİ eylemi yeniden oluşturmak istiyoruz. Aşağıdaki testte, DJTripleThreat'in ana adamımızın assert_template'u kullandığı belirtiliyor.

test "should not create post and instead render new" do 
    post :create, :post => { } 

    assert_template :new 
    #added to doubly verify 
    assert_tag :tag => "h1", :child => /New post/ 
    end 

hala tekne şamandıra etmezse, ben bile bunu son kullanıcıya verilen/görüntülendiğini biliyorum, bakış bazı geliyor emin olmak için bir assert_tag eklemek istiyorum.

Bu yardımcı olur umarım. Bu bulmak gelecek insanlar için

70

doğru yöntemdir:

assert_template :new 
4

Raylar 5.0.0 itibaren, eylem görüntülenen şablonu test ederek düzgün hale geldiği test edebilirsiniz.

Önce Gemfile'a rails-controller-testing gem'i eklemeniz gerekir (sürüm 5'ten beri Raylar'ın dışına çıkarılmış olduğu gibi). Ardından, test, sadece kullanım:

assert_template :new