小编moh*_*del的帖子

Rspec 在重定向后检查模板

这是我为用户创建的操作:

def create
        @user = User.new(user_params)

        if @user.save
            respond_to do |format|
                format.html { 
                    redirect_to edit_admin_user_path(@user) 
                    flash[:success] = "Successfully created"
                }
            end
        else
            render :new
            flash[:alert] = "Something went wrong"
        end
    end
Run Code Online (Sandbox Code Playgroud)

我的测试看起来像这样:

context "POST methods" do

    describe "#create" do
        it "renders the edit template" do
            post :create, user: FactoryGirl.attributes_for(:user)
            expect(response).to render_template(:edit)
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

但是我收到这个错误:

Failures:

  1) Admin::UsersController POST methods #create renders the edit template
     Failure/Error: expect(response).to render_template(:edit)
       expecting <"edit"> but was a redirect to <http://test.host/admin/users/80/edit>
Run Code Online (Sandbox Code Playgroud)

我想检查创建用户后是否呈现 edit.html.haml 文件。我究竟做错了什么?

更新 …

ruby rspec ruby-on-rails

5
推荐指数
1
解决办法
2770
查看次数

Rspec 防止方法被调用

我正在测试用于创建新订单的控制器方法(类似电子商务的应用程序)。如果用户存在于系统中,则应将他重定向到new_user_session_path,否则重定向到new_order_path。就那么简单。

这是我的orders_controller.rb

def new
        if !User.where(phone: params[:phone]).blank? && !user_signed_in?

            redirect_to new_user_session_path()
            flash[:info] = "Already present"
        else
            @order = Order.new
            @menu = Menu.find(params[:menu_id])
            @menu_price = @menu.calculate_price(@menu, params)
        end
    end
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,我需要调用calculate_price方法,因为它计算给定参数的总价格。但在我的测试中,我只想确保重定向是正确的。

现在我收到类似的错误(它们源自 Menu.rb 文件,因为调用了calculate_price):

Front::OrdersController#new redirects user to new order page if user is not present in the system
     Failure/Error: menu_price_change = menu_amount.split(",")[1].gsub(" ","").gsub("]",'')

     NoMethodError:
       undefined method `split' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

这是我的规格文件:

require 'rails_helper'


describe Front::OrdersController, type: :controller do
    describe '#new' do
        # Set up dummy menu
        let …
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails mocking stub

4
推荐指数
1
解决办法
2815
查看次数

标签 统计

rspec ×2

ruby ×2

ruby-on-rails ×2

mocking ×1

stub ×1