如何规范控制器发生模型关联的位置

时间:2011-01-16 00:22:18

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

我正在尝试规范控制器代码:

# ClustersController
def create
  # create new cluster
  @cluster.user = current_user
  # save code
end

我正在使用Rails 3 / RSpec 2,而且我对TDD流程还不熟悉。我基本上想确保在创建操作期间分配了用户属性。

1 个答案:

答案 0 :(得分:1)

首先,我认为你不应该创建,更新保存对象。您可以将用户传递给create方法,如下所示:

Cluster.create(:user => current_user)

要测试这个,你可以这样做:

describe ClusterController do
  describe "POST create" do
    it "creates a new cluster" do
      lamda do 
        post :create
      end.should change(Cluster, :count).by(1)
    end

    it "set the current user as the new cluster's user" do
      user = mock()
      Cluster.should_receive(:create).with(:user => user)
      post :create
      assign(:cluster).user.should == user
    end
  end
end

我认为那样做。

希望有所帮助。