这个默认的RSpec语句是什么意思?

时间:2010-09-09 00:10:28

标签: ruby-on-rails ruby-on-rails-3 rspec rspec2

User.should_receive(:update_attributes).with({'these' => 'params'})

该陈述是什么意思? these在任何地方都没有实例化。

整个陈述是:

  describe "with valid params" do
    it "updates the requested user" do
      User.should_receive(:find).with("37") { mock_user }
      User.should_receive(:update_attributes).with({'these' => 'params'})
      put :update, :id => "37", :user => {'these' => 'params'}
    end

我说这是因为我收到了错误:

unknown attribute: these

来自上述情况......

2 个答案:

答案 0 :(得分:3)

在任何正在运行的测试期间,应该在update_attributes模型上调用方法User,参数为{'these' => 'params'}

基本上,预计会在执行期间发生以下情况:

User.update_attributes({'these' => 'params'})

更多信息:http://rspec.info/documentation/mocks/message_expectations.html

答案 1 :(得分:0)

您不必替换哈希({'these'=>'params'})。把它想象成一份合同。我说过,当我PUT时,我的对象update_attributes模型应该接收以下哈希。在下一行中,您调用update方法并检查合同。