2015-09-02 3 views
3

Я бы хотел проверить свой регистрационный вид с помощью rspec.Как проверить вид разработки с помощью 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/registration/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 

мое окружение:

  • рельсы 4.2.3
  • DEViSE 3.5.1
  • RSpec 3.3.0

Что я делаю неправильно? Спасибо за вашу помощь.

Edit:

переместить свой код в контроллер спецификации и он работает, не идеально, но ...

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 
+1

Вы пробовали страницу wiki? https://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara –

+1

Вы должны опубликовать код, чтобы показать, что вы пробовали. –

+0

@ruby_newbie Я только что добавил свои спецификации. – user3671545

ответ

0

Посмотрите в камень Capybara. Вот отличный справочник, чтобы вы начали (https://github.com/eliotsykes/rspec-rails-examples#capybara-examples).

У него также есть примеры, (https://github.com/eliotsykes/rspec-rails-examples/blob/master/spec/features/user_registers_spec.rb).

+2

Кажется, вы рекомендуете, чтобы OP переместил свой код в тест функции/интеграции , Это не отвечает на вопрос, хотя, если его цель заключалась в том, чтобы тестировать точку зрения. – AdamT

Смежные вопросы