Я новичок в 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/водосвинки правильно.
Я только что закончил свой учебник. Я слежу за его кодом в Github и применяю то, что я узнал, но это то, что я не знаю, как это сделать. – Rumel
проверить этот скринкаст [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) –