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