Допустим, у вас есть действие контроллера для создания следующим образом:
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
А вот 'сообщения # новый' стандартного эшафот вид
<h1>New post</h1>
<% form_for(@post) do |f| %>
<%= f.error_messages %>
...... # just to show, it's bigger....
Теперь, если сообщение успешно создано, вы хотите, чтобы его перенаправляли, но если он терпит неудачу, мы просто хотим повторно выполнить действие NEW. В приведенном ниже тесте используется то, что наш главный человек DJTripleThreat сказал, чтобы использовать assert_template
.
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
Если это все еще не плавает вашу лодку, я бы даже добавить assert_tag, чтобы убедиться, что некоторые зрения идет вверх, так что вы знаете, что оно отображается/оказываемых конечному пользователю.
Надеюсь, это поможет.
Это проверяет, что метод действия получил колл. Действие может отображать любой вид, который он выбирает или даже перенаправляет. – jwadsack