2012-07-17 109 views
1

我遇到了问题,在我的Rails应用程序中使用RSpec和decent_exposure gem。Rspec测试失败与decent_exposure宝石

由于decent_exposure调用方法“new”两次(Model.new(params [name]),我的控制器测试失败,一次使用名称(Brand.new(params [“品牌”))返回Brand.new (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 

所以,可以请你帮我找出如何让通过这个

回答

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 }