1

Ruby と Rails は初めてで、テストを正しい方法で実装しようとしています。私は現在、ユーザーのサインアップに取り組んでいます。最初のユーザーが管理者としてサインアップし、その後のすべてのユーザーが通常のユーザーになることを望みます。

現在、テストを機能として作成する必要があると考えていますが、これが実際にモデル テストであるべきかどうか疑問に思っています。

私の現在のコードはここにあります

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: "user@example.com"
            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: "user2@example.com"
                    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/capybara に正しく適合するようにそれをクリーンアップしたいと考えています。

4

1 に答える 1

0

あなたはマイケル・ハートルによるこの素晴らしいチュートリアルを試すことができます.彼はこのチュートリアルでRspecを使用しています.

于 2013-07-12T02:05:02.453 に答える