2014-12-16 2 views
1

Я начинаю рубин на рельсе, и я пытаюсь использовать rspec для проверки моего контроллера. Но у меня есть некоторые проблемы, чтобы посетить мою страницу в спецификации. Вот мой user_spec.rb:Как посетить страницу с именем пользователя, rspec

#!/bin/env ruby 
# encoding: utf-8 
require 'user' 
require 'rails_helper' 

describe User do 
    it "login sucess" do 
    visit "welcome/index" 
    fill_in "session_user_id", :with => "1992111-1234" 
    fill_in "session_password", :with => "sa1234" 
    click_button "ログイン" 
    end 

    it "main menu" do 
    visit "welcome/mainmenu" 
    end 
end 

Когда я бегу спецификации, у меня есть эта ошибка: enter image description here

Я не могу пройти через shop_no, потому что я не имею CURRENT_USER: <%= current_user.shop_no%>. Итак, сначала я должен войти в систему, но я не знаю, как работать с rspec. Я пытался логин (создающих пользователя) в моей спецификации/user.rb:

#!/bin/env ruby 
# encoding: utf-8 
require "rails_helper" 

    def login(user) 
    visit root_path 
    fill_in "session_user_id", :with => "1992111-1234" 
    fill_in "session_password", :with => "sa1234" 
    click_button "ログイン" 
    end 

Но я не знаю, как работать с этим. Так что, пожалуйста, помогите мне!

Обновить страницу Логин:

<div class="medium-4 medium-centered row" style="padding: 5px"> 
    <div class="medium-10 medium-centered columns"> 
     <% if flash[:notice] %> 
     <div class="notice"> 
      <%= flash[:notice] %> 
     </div> 
     <% end %> 
     <%= form_for(:session, url: login_path) do |f| %> 
     <%= f.label(:User_id, 'User ID') %> 
     <%= f.text_field :user_id %> 
     <%= f.label :Password %> 
     <%= f.password_field :password %> 
     <center> 
      <%= f.submit "ログイン", class: "button [tiny large]", :style => "border-radius: 0px 0px" %> 
     </center> 
     <% end %> 
    </div> 
</div> 
+0

кажется, что ваша ошибка в 'приложение/просмотров/приветствия/mainmenu.html.erb' так Пожалуйста, пост' приложение/просмотров/приветственное/mainmenu.html.erb ' –

+0

в этом представлении может быть вызов метода shop_no, который не определен, пожалуйста, проверьте, что также –

+0

@Rajarshi Das, я добавил свое mainmenu, и я вызываю shop_no в <% = current_user.shop_no%>. Так что я думаю, что должен сначала войти в spec – mayoneQD

ответ

0

Есть, вероятно, более эффективные способы, но это должно работать. Он эффективно регистрирует пользователя для каждого теста. Возможно, вам придется добавить код для выхода из системы перед началом следующего теста.

Изменить it "login success" do этой линии:

describe User do 
    before :each do # <===== this line 
    visit "welcome/index" 
    fill_in "user_id", :with => "1992111-1234" # <=== updated 
    fill_in "password", :with => "sa1234"  # <=== updated 
    click_button "ログイン" 
    end 
    ... 
end 
+0

извините! он не работает, по-прежнему та же ошибка – mayoneQD

+0

Можете ли вы снова проверить ошибку? Это все еще 'undefined 'shop_no' для nil: NilClass'? – roob

+0

Да! потому что мой current_user в <% = current_user.shop_no%> равен нулю. Поэтому я должен поддерживать login (current_user) на индексной странице на главной странице. – mayoneQD

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