Попытка проверить контроллер в Rspec. (Rails 2.3.8, Ruby 1.8.7, Rspec 1.3.1, Rspec-Rails 1.3.3)
Я пытаюсь опубликовать создание, но получаю сообщение об ошибке:
ActiveRecord :: AssociationTypeMismatch в «ProjectsController с соответствующими параметрами при входе в систему: следует создать проект»
Ожидается пользователь (# 2171994580), получил TrueClass (# 2148251900)
Мой тестовый код выглядит следующим образом:
def mock_user(stubs = {})
@user = mock_model(User, stubs)
end
def mock_project(stubs = {})
@project = mock_model(Project, stubs)
end
def mock_lifecycletype(stubs = {})
@lifecycletype = mock_model(Lifecycletype, stubs)
end
it "should create project" do
post :create, :project => { :name => "Mock Project",
:description => "Mock Description",
:owner => @user,
:lifecycletype => mock_lifecycletype({ :name => "Mock Lifecycle" }) }
assigns[:project].should == mock_project({ :name => "Mock Project",
:description => "Mock Description",
:owner => mock_user,
:lifecycletype => mock_lifecycletype({ :name => "Mock Lifecycle" })})
flash[:notice].should == "Project was successfully created."
end
Проблема возникает, когда я пытаюсь сделать :owner => @user
в коде выше. По какой-то причине он думает, что мой @user TrueClass
вместо User
объекта класса. Забавно, что, если я закомментирую код post :create
, и я сделаю простой @user.class.should == User
, это сработает, а это означает, что @user действительно является объектом класса User
.
Я тоже пробовал
:owner => mock_user
:owner => mock_user({ :name => "User",
:email => "user@email.com",
:password => "password",
:password_confirmation => "password })
:owner => @current_user
Примечание. @Current_user также считается пользователем, который я тестировал (таким же образом, @current_user.class.should == User
), а также возвращает TrueClass
, когда я пытаюсь установить: owner.
Кто-нибудь знает, почему это происходит?
Спасибо!