我有一個Rails控制器,我無意中在'create'方法中定義了'edit'方法。儘管存在控制器錯誤,但我的測試仍然通過,但訪問編輯網址正確顯示錯誤。這是爲什麼?
我的控制器與所述錯誤:
class UsersController < ApplicationController
...
def create
@user = User.new(params[:user])
...
def edit
@user = User.find(params[:id])
@title = "Edit user"
@check = "BORK" # something I added for testing the rendered output
end
end
end
一個例子測試;
it "should have the right title" do
get :edit, :id => @user
response.should have_selector('title', :content => 'Edit user')
end
所以,當我運行測試(我需要Rspec)和輸出response.body,用戶edit.html.erb模板正確呈現;所有的實例變量都是可見的。所以所有的測試都通過了。
正確訪問'編輯'網址顯示錯誤;該模板使用@user實例變量,但它沒有正確設置。當然,更正控制器可以修復錯誤。
我不明白爲什麼測試通過了,爲什麼在測試中所有的實例變量值都可見?
我的本能表明這是一個範圍問題? @user是一個實例變量,在測試中它被設置在測試範圍內,但在我的控制器中,它在內部'編輯'方法的範圍內?但是測試如何找到'編輯'方法?內部的「編輯」方法存在於什麼範圍內?
你能粘貼錯誤嗎? – Pasta 2011-01-10 10:02:16