为什么我收到错误“未定义的局部变量或方法`分配'”?

时间:2010-06-10 23:10:14

标签: ruby-on-rails rspec

我可能会遗漏一些基本的东西,但我对此错误感到困惑:

型号代码:

class CachedStat < ActiveRecord::Base
    def self.create_stats_days_ago(days_ago, human_id)
    d = Date.today - days_ago.day
    @prs = PageRequest.find(:all, :conditions => [ "owner_type = 'Human' and owner_id = ? and created_at = ?", human_id, d] )
  end
end

规范代码:

it "should create stats for the specified number of days in the past" do
  CachedStat.create_stats_days_ago(1, Human.first.id)
  assigns[:prs].should eql("foo")
end

错误是:

undefined local variable or method `assigns' for #<Spec::Rails::Example::ModelExampleGroup::Subclass_1:0x2fbac28>

我觉得我忽略了一些显而易见的东西,但这对我来说是不可见的。有什么建议吗?

非常感谢! -Jason

2 个答案:

答案 0 :(得分:1)

正如中微子所说,assigns仅在控制器/视图规格中可用,它们在模型规范中毫无意义。

在您的案例中,

可以看起来像

it "should create stats for the specified number of days in the past" do
  CachedStat.create_stats_days_ago(1, Human.first.id).should eql("foo")
end

答案 1 :(得分:0)

我可能在这里错了,但assigns可能只在控制器规格中可用。

另外,请检查您的rspec版本。