【问题标题】:RSPEC ERROR: expected: [2015-05-01 19:56:25 -0700] got: nil (compared using ==) Ruby on RailsRSPEC 错误:预期:[2015-05-01 19:56:25 -0700] 得到:nil(使用 == 比较)Ruby on Rails
【发布时间】:2015-05-01 23:06:41
【问题描述】:

我正在使用 ruby​​ on rails 进行测试(使用 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 时,它给了我一个值。因此,当我测试时,它不应该返回与输出相同的值吗?

【问题讨论】:

    标签: ruby-on-rails testing rspec controller factory-bot


    【解决方案1】:

    assigns 用于测试实例变量,但您正在尝试测试局部变量。在控制器中使用实例变量:

    @start_at = Time.zone.at(params[:start].to_f)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      相关资源
      最近更新 更多