Rspec不会失败这个简单的代码,即使它应该

时间:2011-09-13 19:41:04

标签: ruby-on-rails testing rspec

控制器:

class FooController < ApplicationController
  def create
  end
end

控制器规格:

describe FooController
  it "does bar" do
    Foo.should_receive(:new).with("text" => "Lorem ipsum")
    post :create, foo: { "text" => "Lorem ipsum" }
  end
end

当我运行时,rspec说这是成功的。但是,Foo.new方法永远不会调用create。但是,如果我将Lorem ipsum函数调用中的post更改为其他内容,则会失败。我希望这会失败,如果我将Foo.new(params[:foo])添加到create方法的主体,则会成功。为什么不是这样?

1 个答案:

答案 0 :(得分:2)

看起来你在描述块上缺少“do”。尝试:

describe FooController do
  it "does bar" do
    Foo.should_receive(:new).with("text" => "Lorem ipsum")
    post :create, foo: { "text" => "Lorem ipsum" }
  end
end