2016-02-12 2 views
0

У меня есть файл users_controller.rb, в котором создать действие определяется как: -Каков правильный способ тестирования создать действие в рельсах RESTfull-контроллер?

def create 
    @user = User.new(user_params) 
    if current_user.g_admin? 
    @user.role = 'c_admin' 
    elsif current_user.c_admin? 
    @user.role = 'c_user' 
    end 
    @user.admin_provisioned = true 
    authorize @user 
    respond_to do |format| 
    if @user.save 
     format.html { redirect_to authenticated_root_url, notice: 'User was successfully created and email has been sent.' } 
     format.json { render :show, status: :created, location: @user } 
    else 
     format.html { render :new } 
     format.json { render json: @user.errors, status: :unprocessable_entity } 
    end 
    end 
end 

Теперь я хотел бы написать тест для этого метода, отражающего все поведение в этом методе. Я совершенно новичок в тестировании, поэтому подробный и стандартный способ написания теста будет принят в качестве ответа. Версия для rspec - 3,4. Счастливое кодирование.

ответ

0

Итак, вы можете проверить это с помощью rspec и capybara. Для заполнения части вам необходимо использовать элементы ввода, которые есть на вашей странице.

describe "let an guest create a user account" do 
    fill_in :user_object, with: "value" 

    click_button "Save User" 

    expect(page).to have_content("User was successfully created and email has been sent.") 
end 


describe "let an guest try to create an account with invalid data" do 
    fill_in :user_object, with: "invalid value" 

    click_button "Save User" 

    expect(page).to_not have_content("User was successfully created and email has been sent.") 
    expect(page).to have_content("content from the :new page") 
end 
Смежные вопросы