Ruby on rails 3 测试控制器动作中的方法是否在rspec中被调用。嘲弄

Ruby on rails 3 测试控制器动作中的方法是否在rspec中被调用。嘲弄,ruby-on-rails-3,Ruby On Rails 3,一些背景: 我试图测试是否在控制器的操作中调用方法。我正在尝试记录用户注册的位置(手机、网络等) 正在为控制器编写此规范。我编写此测试是为了确保调用控制器操作中的post_注册: describe Api::Users::FacebookConnectController do ... it "should log an event with an app_context" do expect_any_instance_of(described_class).to recei

一些背景: 我试图测试是否在控制器的操作中调用方法。我正在尝试记录用户注册的位置(手机、网络等)

正在为控制器编写此规范。我编写此测试是为了确保调用控制器操作中的post_注册:

describe Api::Users::FacebookConnectController do
...
  it "should log an event with an app_context" do
        expect_any_instance_of(described_class).to receive(:post_signup)

        subject
  end
它快速而肮脏,甚至不检查方法#post#u signup调用的参数

我的实际控制人有一个#register方法,在某个时候调用这个post#u注册方法:

  post_signup(user,
            Event::EventType::USER_FB_ACCOUNT_NON_SUBSCRIPTION_COMPLETED,
            app_context: current_app_id,
            description: "Automatically Populated Via #{current_app_id}")
控制器中包含的帮助器内的post_注册方法如下所示:

def post_signup(user, event_type, app_context: current_app_id, description: "Automatically populated")
...
      Event.create!(
        event_type: event_type,
        date: Time.now.utc,
        eventable: user,
        description: description,
        app_context: app_context
      )
...
end
总之,这对我来说是一个合理的测试。我想测试在控制器中调用#register操作时调用#post#u signup

我觉得我的测试糟透了,因为我没有捕捉到实际的控制器。我正在测试控制器的任何实例是否接收post_Signup方法,并且我也没有指定参数。我该如何用模拟软件来实现这一点?如何测试所描述类中的实际控制器,而不仅仅是一些随机实例?如何检查post_注册是否使用名为app_context的参数调用