Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 Rspec控制器专用方法_Ruby On Rails 3_Rspec2 - Fatal编程技术网

Ruby on rails 3 Rspec控制器专用方法

Ruby on rails 3 Rspec控制器专用方法,ruby-on-rails-3,rspec2,Ruby On Rails 3,Rspec2,是否可以在控制器中测试私有方法?这基本上决定了记录是否应该保存在数据库中 def create logger.debug "inside CREATE" @schedule = Schedule.new(params[:schedule]) if is_valid_schedule # <-- this is the private method if @schedule.save flash[:success] = "Ne

是否可以在控制器中测试私有方法?这基本上决定了记录是否应该保存在数据库中

def create
    logger.debug "inside CREATE"
    @schedule = Schedule.new(params[:schedule])

    if is_valid_schedule # <-- this is the private method
        if @schedule.save
            flash[:success] = "New schedule entry added!"
            redirect_to @schedule
        else
            render 'new'
        end
    else
        flash.now[:error] = "Schedule has an overlap"
        render 'new'
    end
end

在创建方法测试期间,将调用并测试私有方法
是否有效。如果您想单独测试这个私有方法。请看下面的示例:

class Admin::MembersController < Admin::BaseController
  #some code
  private
   def is_valid_example
     @member.new_record?
   end
end

这对你来说不是答案,但是你可以阅读一下关于指定私有方法的意见。我的测试现在正在运行,所以不需要检查私有方法。谢谢Paul。那么,Jane,你做了什么使你的测试工作?谢谢你的回答,但是我的测试最终在没有检查私有方法的情况下工作了。
class Admin::MembersController < Admin::BaseController
  #some code
  private
   def is_valid_example
     @member.new_record?
   end
end
require 'spec_helper'
describe Admin::MembersController do
 .... 
 #some code
  describe "test private method" do
   it "should be valid" do
     member = FactoryGirl.create(:member)
     controller.instance_variable_set('@member', member)
     controller.send(:is_valid_example).should be(false)
   end
  end
end