0

我有控制器:

def login
  if admin_logged_in?
    flash[:notice]="You are already logged in"
    redirect_to( "/admin/")
  else
    render(:layout => "admin")
  end
end

我的 RSpec 测试用例

require 'spec_helper'

describe "AdminController" do
before (:each) do
    @admin = FactoryGirl.create(:admin)
end

describe "GET 'login'" do
    it "should be successful" do
      get 'login'
      response.should be_success
    end
end
end

当我要执行我的测试用例时出现错误:

 1) AdminController GET 'login' should be successful
     Failure/Error: get 'login'
     RuntimeError:
       @controller is nil: make sure you set it in your test's setup method.
     # ./spec/controllers/admin_controller_spec.rb:10:in `block (3 levels) in <top (required)>'

Finished in 0.18799 seconds
1 example, 1 failure

Failed examples:

rspec ./spec/controllers/admin_controller_spec.rb:9
4

1 回答 1

0

"AdminController"在您的测试中,我将替换to的 describe 块AdminController。您的测试现在应该如下所示...

require 'spec_helper'

describe AdminController do
before (:each) do
  @admin = FactoryGirl.create(:admin)
end

describe "GET 'login'" do
  it "should be successful" do
    get 'login'
    response.should be_success
  end
end
end

说明:因为您在括号中写了 AdminController,所以 rspec 无法判断您正在测试哪个控制器。

于 2012-12-05T23:05:16.893 回答