【发布时间】:2017-02-02 11:51:09
【问题描述】:
我一直在使用 rails 5.0.0.1,是自动化测试的新手,并使用 rspec-rails-3.5.2 来编写自动化。
我想测试一些基本的控制器渲染功能和实例变量分配。 编写了一个控制器测试用例,它将检查是否渲染了 get_structure 模板并分配了所需的实例变量。
describe 'GET #get_structure' do
context 'get attributes to build tree structure' do
let(:plan) { FactoryGirl.create(:plan) }
it 'expects all keys to build structure' do
get :get_structure, params: { id: 6, school_subdomain: 'chrys' }
expect(response).to render_template(:get_structure)
expect(assigns.keys.include?('collection')).to be true
expect(assigns.keys.include?('structure')).to be true
expect(assigns.keys.include?('config')).to be true
end
end
end
运行测试用例后,我意识到由于某些安全原因,不再支持 assert_template。
无方法错误: assert_template 已被提取到 gem 中。要继续使用它, 将
gem 'rails-controller-testing'添加到您的 Gemfile。
由于它在 rspec-rails 文档中提到使用 rails-controller-testing gem 将添加回功能,所以我确实添加了它。
在 Rails 5.x 中,控制器测试已移至其自己的 gem 是rails-controller-testing。在控制器规范中使用分配 不添加此 gem 将不再起作用。
我添加了 rails-controller-testing-1.0.1 gem。同样在 rails-controller-testing gem 文档中提到
rspec-rails 自版本以来自动与此 gem 集成 3.5.0。将 gem 添加到您的 Gemfile 中就足够了。
但即使添加后,仍然会抛出同样的错误。
如何解决这个问题?有没有其他方法可以进行控制器测试。 很长一段时间以来,我一直在努力解决这个问题。任何帮助,将不胜感激。提前致谢。
【问题讨论】:
标签: ruby-on-rails rspec rspec-rails