Rails 5.2.2
当我需要在测试中添加帮助程序时,请使用type helper:
RSpec.describe Utilities, type: :helper do
end
当我需要添加一些请求(例如pach或删除或发布)时,请使用请求类型:
RSpec.describe 'AuthenticationPages', type:
:request do
end
但是当我需要一起使用type helper并请求时,代码应该是什么?
获取示例代码:
RSpec.describe Utilities, type: :helper do
describe 'as wrong user' do
let(:user) {FactoryGirl.create(:user)}
let(:wrong_user) {FactoryGirl.create(:user, email: 'wrong@example.com')}
before {sign_in user, no_capybara: true}
describe 'submitting a GET request to the Users#edit action' do
before {get edit_user_path(wrong_user)}
specify {expect(response.body).not_to match(full_title('Edit user'))}
specify {expect(response).to redirect_to(root_url)}
end
end
答案 0 :(得分:0)
type
只是一部分元数据,您可以在documentation上阅读有关它的更多信息。当使用Rails和Rspec时,会自动推断出该类型会加载额外的东西,以简化测试编写。
据我了解,无法提供类型或类似内容的列表,因此您有几种选择。
选项1 :为您的规格选择一种类型,从另一种类型中手动加载所需的内容。
选项2 :创建一种新的特殊类型,加载您所需要的所有内容,该简短示例摘自rails_helper.rb
:
RSpec.configure do |config|
# ...
config.include JsonHelpers, type: :my_unique_type
# ...
end
在这种情况下,如果某人用type: :my_unique_type
标记了一个规范,则JsonHelpers
将被加载并在该规范内可用。
选项3 :划分职责,因此您不需要这两种类型,将帮助程序与请求测试分开进行测试。
答案 1 :(得分:0)
RSpec.describe 'AuthenticationPages', type: :request do
describe Utilities, type: :helper do
//it's work
end
end