使用decent_exposure gem进行Rspec测试失败

时间:2012-07-17 12:36:00

标签: ruby-on-rails rspec

我在Rails应用程序中使用RSpec和decent_exposure gem时遇到了问题。

我的控制器测试失败,因为decent_exposure调用方法“new”两次(Model.new(params [name])。一次用name(Brand.new(params [“brands”])返回Brand.new(nil) ))和我期望的第二(Brand.new(params [“brand”]))。我需要以某种方式跳过我的测试文件中的第一个调用.Brand.should_receive(:new).with(...)。once.and_return (乐队)没有工作。

我的测试文件:

let(:brand) {
  mock_model(Brand).as_null_object
}

before do
  Brand.stub(:new).and_return(brand)
end

describe "with valid parameters" do
  it "should create a new brand" do
    Brand.should_receive(:new).with(
      "name" => "LG",
    ).and_return(brand)

    post :create, :brand => {
      "name" => "LG",
    }
  end
end

那么,请你帮我弄清楚如何通过这个?

1 个答案:

答案 0 :(得分:0)

试试这个:

Brand.should_receive(:new).once.with(any_args())
Brand.should_receive(:new).once.with("name" => "LG").and_return(brand)

我建议添加对控制器用于持久化brand的任何方法的期望。通常这是save

brand.should_receive(:save) { true }