Rspec测试传递错误的变量?

时间:2012-10-19 15:04:35

标签: ruby-on-rails rspec tdd

我为一个控制器写了一个测试,最近不得不重新调整一下这个新方法。我的旧测试失败了,我无法弄清楚它为什么没有通过。我是测试的新手,所以我的理解是有限的。

我的方法基本上接收slug_text参数。从slug_text,我们可以得到地方的id和它的类型(多态)。使用这些值,我们可以在DB中找到记录。

def new
  @slug = params[:slug_text]
  place_id = Slug.where(name: @slug).first.sluggable_id.to_i
  place_type = Slug.where(name: @slug).first.sluggable_type.to_s
  @klass = place_type.classify.constantize
  @place = @klass.find(place_id)
end

该视图中的操作似乎有效,但是,我的测试仍然没有说它expects 1, but receives 0

it "sends the query to the correct class" do
  Hotel.should_receive(:find).with(1)
  get :new, place_type: "Hotel", id: 1
end

这个测试应该检查我的方法的最后两行,并确保我正在拉正确的记录。

我是否错误地将place_type作为符号传递,此外,我是否必须传入:slug_text或者我是否可以开始测试任何一行?

0 个答案:

没有答案