我想用rspec测试我的注册视图。
我尝试过很多类似于Testing devise views with rspec或Testing Views that use Devise with RSpec这样的方法
但似乎什么都没问题,我总是会犯这样的错误:
undefined local variable or method `resource'或
does not implement: resource我目前的规格(spec/views/devise/registrations/new.slim_spec.rb):
require 'rails_helper'
RSpec.describe 'devise/registrations/new.slim', type: :view do
describe 'sign up form' do
before do
allow(view).to receive(:resource).and_return(User.new)
allow(view).to receive(:resource_name).and_return(:user)
end
it 'does not contains an area for user avatar' do
render
expect(rendered).to_not include('Profile Pic')
end
end
end 我的环境:
我做错了什么?谢谢你的帮助。
编辑:
我把我的代码移到控制器规范上,它可以工作,并不完美,但是.
RSpec.describe Users::RegistrationsController, type: :controller do
before(:each) do
request.env['devise.mapping'] = Devise.mappings[:user]
end
describe '#new' do
render_views
it 'does not contains an area for user avatar' do
get :new
expect(response.body).to_not include('Profile Pic')
end
end
end发布于 2020-08-12 11:34:16
1.在rails_helper.rb中设置配置
RSpec.configure do |config|
config.include Devise::Test::ControllerHelpers, type: :view
config.include Devise::Test::ControllerHelpers, type: :controller
# add these if you need other type of rspec.
# config.include Devise::Test::IntegrationHelpers, type: :feature
# config.include Devise::Test::IntegrationHelpers, type: :request
end2.您的看法Rspec。
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe 'rendering locals in a partial', type: :view do
let(:user) { create(:user) }
before :each do
sign_in user
end
it "displays the widget" do
widget = Widget.create!(:name => "slicer")
render :partial => "widgets/widget.html.erb", :locals => {:widget => widget}
expect(rendered).to match /slicer/
end
end
end发布于 2015-09-02 20:23:51
看看凯巴拉宝石。这里是一个很好的指南,让您开始(https://github.com/eliotsykes/rspec-rails-examples#capybara-examples)。
他也想出了例子(spec.rb)。
https://stackoverflow.com/questions/32358049
复制相似问题