2013-07-12 2 views
1

Я новичок в Ruby и Rails, и я пытаюсь реализовать тесты правильно. В настоящее время я работаю над тем, чтобы пользователи подписывались. Я бы хотел, чтобы первый пользователь зарегистрировался как администратор, а затем каждый пользователь после этого стал обычным пользователем.Правильный способ написать тест rspec/capybara?

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

Мой текущий код здесь

require 'spec_helper' 

describe "User pages" do 
    subject { page } 

    describe "Sign up page" do 
     before { visit signup_path } 

     it { should have_button('Create!') } 
    end 

    describe "Creating an account" do 
     before { visit signup_path } 
     let(:submit) { "Create!" } 

    describe "with invalid information" do 
     it "should not create the user account" do 
      expect { click_button "Create!"}.not_to change(User, :count) 
     end 

     describe "it should display errors" do 
      before { click_button submit } 

      it { should have_content('Failed signup') } 
     end 
    end 

    describe "with valid information" do 
     before do 
      fill_in "Name", with: "Example User" 
      fill_in "Email", with: "[email protected]" 
      fill_in "Password", with: "password" 
      fill_in "Confirm Password", with: "password" 
     end 

     it "should create the user" do 
      expect { click_button submit }.to change(User, :count).by(1) 
     end 

     # User sign in not implemented at this point 
     describe "the first user" do 
      User.all.count.should == 0 
      click_button submit 
      User.all.count.should == 1 
      @firstUser = User.first 
      @firstUser.is_admin?.should == true 

      describe "the second user" do 
       before do 
        visit signup_path 
        fill_in "Name", with: "Example User2" 
        fill_in "Email", with: "[email protected]" 
        fill_in "Password", with: "password" 
        fill_in "Confirm Password", with: "password" 
       end 

       click_button submit 
       @secondUser = User.all.last 
       @secondUser.is_admin?.should == false 
      end 
     end 
    end 
end 

конец

я в основном озабочены «с действительной информацией» части и хотели бы убрать, что так оно вписывается в RSpec/водосвинки правильно.

ответ

0

вы можете попробовать это большое tutorial Майкл Hartl, он использует RSpec в этом учебнике вы можете узнать из него :) я начинающий тоже, и я начал с ним: D

+0

Я только что закончил свой учебник. Я слежу за его кодом в Github и применяю то, что я узнал, но это то, что я не знаю, как это сделать. – Rumel

+0

проверить этот скринкаст [Ruby for Newbies: Testing with Rspec] (http://net.tutsplus.com/tutorials/ruby/ruby-for-newbies-testing-with-rspec/), а также курс с самого начала в Rspec по кодовой школе [Тестирование с помощью RSpec] (http://codeschool.com/courses/testing-with-rspec) –

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