设计助手的Rspec测试-设计错误消息
我有以下助手:设计助手的Rspec测试-设计错误消息,rspec,ruby-on-rails-4,capybara,Rspec,Ruby On Rails 4,Capybara,我有以下助手: def devise_error_messages! return "" if resource.errors.empty? messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join sentence = I18n.t("errors.messages.not_saved", :count => re
def devise_error_messages!
return "" if resource.errors.empty?
messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
sentence = I18n.t("errors.messages.not_saved",
:count => resource.errors.count,
:resource => resource.class.model_name.human.downcase)
html = <<-HTML
<div id="error_explanation" class="alert alert-danger">
<h2>#{sentence}</h2>
<ul>#{messages}</ul>
</div>
</br>
HTML
html.html_safe
end
def设计错误消息!
如果resource.errors.empty返回“”?
messages=resource.errors.full_messages.map{| msg | content_标记(:li,msg)}.join
语句=I18n.t(“错误.消息.未保存”,
:count=>resource.errors.count,
:resource=>resource.class.model_name.human.downcase)
html=我自己想出来的:
require 'spec_helper'
describe DeviseHelper do
before do
view.stub(:resource).and_return(User.new)
view.stub(:resource_name).and_return(:user)
view.stub(:devise_mapping).and_return(Devise.mappings[:user])
end
describe "No Error Message" do
it { helper.devise_error_messages!.should eql("") }
end
describe "Error Message Present" do
it {
view.stub(:resource).and_return(User.create)
helper.devise_error_messages!.should_not eql("")
}
end
end
以下是使用新rspec语法的更新:
require 'rails_helper'
RSpec.describe DeviseHelper, type: :helper do
before do
allow(view).to receive(:resource).and_return(User.new)
allow(view).to receive(:resource_name).and_return(:user)
allow(view).to receive(:devise_mapping).and_return(Devise.mappings[:user])
end
context 'no error messages' do
it '#devise_error_messages!' do
expect(helper.devise_error_messages!).to eq("")
end
end
context 'with error messages' do
it '#devise_error_messages!' do
allow(view).to receive(:resource).and_return(User.create)
expect(helper.devise_error_messages!).to_not eq("")
end
end
end
我试过了,但它给了我错误,所以我修改了它,就像这样
require 'spec_helper'
RSpec.describe DeviseHelper, type: :helper do
let(:resource_name) { (:contact) }
let(:devise_mapping){ (Devise.mappings[:contact]) }
context 'no error messages' do
let(:resource) { (Contact.new) }
it '#devise_error_messages!' do
expect(devise_error_messages!).to eq("")
end
end
context 'with error messages' do
let(:resource) { (Contact.create) }
it '#devise_error_messages!' do
expect(devise_error_messages!).to_not eq("")
end
end
end
在我的例子中,模型名是contact