1

第一次在这个有用的社区上发帖,但自从我开始编程之旅以来就一直在使用它。我是 Rails 新手,无法编写测试。到目前为止,我一直在尝试基于Authlogic perishable token guide编写控制器测试。

但是在测试过程中,一直卡在线上

#controller
@user = User.find_using_perishable_token(params[:activation_code], 1.week) || (redirect_to new_user_session_url and return)

这是测试中遇到麻烦的那一行:

#test
User.any_instance.stub(:find_using_perishable_token) {mock_model(User, stubs(:active => true)) }
get :create, :activation_code => 'valid'
response.should render_template 'new'

response.code.should == "200"
#the test response is 302, not 200
response.should redirect_to("/")
#the test shows the path as user_sessions/new,
#meaning it didn't pass the condition in the controller with the find_using_pt method

下面是测试输出:

Failure/Error: response.should render_template 'new' expecting <"new"> but rendering with <""> 
# ./spec/controllers/activations_controller_spec.rb:18:in `block (3 levels) in <top (required)>'

在阅读了发布的答案之一后,似乎我没有正确创建存根/模拟,这就是为什么它不断获得 redirect_to (302) 而不是继续测试的原因。(find_using_pt 是 Authlogic 的一种方法)。因此,问题在于 redirect_to 行,因为它永远不会继续控制器/页面渲染

任何建议将不胜感激。谢谢。

4

0 回答 0