mon*_*ike 48 ruby-on-rails ruby-on-rails-3
我一直在
@controller is nil: make sure you set it in your test's setup method.
Run Code Online (Sandbox Code Playgroud)
当我运行我的测试.知道这意味着什么吗?
Ers*_*yan 82
当你继承ActionController :: TestCase时,如果它们不匹配,它会从测试名称中推断出控制器名称,你必须使用setup
test 的一部分来设置它.
所以,如果你有
class PostsControllerTest < ActionController::TestCase
def test_index
#assert something
end
end
Run Code Online (Sandbox Code Playgroud)
然后@controller
是自动实例化PostsController
,但是,如果不是这种情况,并且您有一个不同的名称,则需setup
要这样做
class SomeTest < ActionController::TestCase
def setup
@controller = PostController.new
end
end
Run Code Online (Sandbox Code Playgroud)
小智 15
我正在从rails 4上的beta版升级到rspec 3并遇到此错误.问题是我们的Controller规范描述了使用符号而不是字符串的语句.Rspec试图将符号实例化为控制器,但它们实际上是"行为".
#trys to set @controller = Index.new
describe SomeController do
describe :index do
before do
get :index, format: :json
end
it { expect(response).to be_success}
end
end
#works
describe SomeController do
describe 'index' do
before do
get :index, format: :json
end
it { expect(response).to be_success}
end
end
Run Code Online (Sandbox Code Playgroud)
cha*_*deb 11
ErsatzRyan的回答是正确的,但是有一个小错字.代替
@controller = PostsController
Run Code Online (Sandbox Code Playgroud)
它应该是
@controller = PostsController.new
Run Code Online (Sandbox Code Playgroud)
否则你会收到一个错误:未定义的方法`response_body ='
归档时间: |
|
查看次数: |
15681 次 |
最近记录: |