首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用rspec测试设计视图

如何用rspec测试设计视图
EN

Stack Overflow用户
提问于 2015-09-02 16:10:48
回答 2查看 3.7K关注 0票数 6

我想用rspec测试我的注册视图。

我尝试过很多类似于Testing devise views with rspecTesting Views that use Devise with RSpec这样的方法

但似乎什么都没问题,我总是会犯这样的错误:

代码语言:javascript
复制
undefined local variable or method `resource'

代码语言:javascript
复制
does not implement: resource

我目前的规格(spec/views/devise/registrations/new.slim_spec.rb):

代码语言:javascript
复制
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 

我的环境:

  • rails 4.2.3
  • 设计3.5.1
  • rspec 3.3.0

我做错了什么?谢谢你的帮助。

编辑:

我把我的代码移到控制器规范上,它可以工作,并不完美,但是.

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2020-08-12 11:34:16

1.在rails_helper.rb中设置配置

代码语言:javascript
复制
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
end

2.您的看法Rspec。

代码语言:javascript
复制
# 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
票数 1
EN

Stack Overflow用户

发布于 2015-09-02 20:23:51

看看凯巴拉宝石。这里是一个很好的指南,让您开始(https://github.com/eliotsykes/rspec-rails-examples#capybara-examples)。

他也想出了例子(spec.rb)。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32358049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档