RSPEC ERROR: expected: [2015-05-01 19:56:25 -0700] got: nil (compared using ==) Ruby on Rails
RSPEC ERROR: expected: [2015-05-01 19:56:25 -0700] got: nil (compared using ==) Ruby on Rails
我正在 rails 上使用 ruby 进行测试(使用 rspec)- 像这样测试我的事件控制器(特别是变量赋值):
控制器代码:
class EventsController < ApplicationController
def index
start_at = Time.zone.at(params[:start].to_f)
puts start_at
end
上面的 puts start_at 命令给出了输出:
2015-05-01 19:56:25 -0700
RSPEC 测试代码:
describe EventsController do
login_user
before do
@event = FactoryGirl.create(:event)
end
describe "INDEX action" do
it "assings correct start time" do
get('index', {:format=>:json, :start=> @event.starts_at,:end=>@event.ends_at})
expect(assigns(:start_at)).to eq(@event.starts_at)
end
end
错误信息:
Failure/Error: expect(assigns(:start_at)).to eq(@event.starts_at)
expected: Fri, 01 May 2015 19:56:25 PDT -07:00
got: nil
(compared using ==)
我很困惑,为什么它变成零 - 当我输出 start_at 它给了我一个值。因此,当我测试时,它不应该 return 与输出相同的值吗?
assigns
用于测试实例变量,但您正在尝试测试局部变量。在控制器中使用实例变量:
@start_at = Time.zone.at(params[:start].to_f)
我正在 rails 上使用 ruby 进行测试(使用 rspec)- 像这样测试我的事件控制器(特别是变量赋值):
控制器代码:
class EventsController < ApplicationController
def index
start_at = Time.zone.at(params[:start].to_f)
puts start_at
end
上面的 puts start_at 命令给出了输出:
2015-05-01 19:56:25 -0700
RSPEC 测试代码:
describe EventsController do
login_user
before do
@event = FactoryGirl.create(:event)
end
describe "INDEX action" do
it "assings correct start time" do
get('index', {:format=>:json, :start=> @event.starts_at,:end=>@event.ends_at})
expect(assigns(:start_at)).to eq(@event.starts_at)
end
end
错误信息:
Failure/Error: expect(assigns(:start_at)).to eq(@event.starts_at)
expected: Fri, 01 May 2015 19:56:25 PDT -07:00
got: nil
(compared using ==)
我很困惑,为什么它变成零 - 当我输出 start_at 它给了我一个值。因此,当我测试时,它不应该 return 与输出相同的值吗?
assigns
用于测试实例变量,但您正在尝试测试局部变量。在控制器中使用实例变量:
@start_at = Time.zone.at(params[:start].to_f)