写作单元测试私人功能..不确定正确的策略

时间:2013-11-11 18:07:35

标签: ruby-on-rails unit-testing shoulda

我的代码..:

after_save :handle_test

private

def handle_test
  if parent.try(:is_test)
    Resque.enqueue UnpackTestOnS3, parent.id
  end
end

我正在尝试制定测试此模型逻辑的最佳方法。

我是否测试过Resque收到的东西? 我测试parent.try(:is_test)是否属实?如果是这样,那将是一种愚蠢的,因为在测试本身我将不得不存根或update_attribute .. 这太精细了,根本无法测试吗? 我应该只测试一个文件出现在S3上吗?我不确定将单元测试实际上传到S3的单元测试是否有意义。

热烈欢迎所有策略。

1 个答案:

答案 0 :(得分:2)

您可以在创建或更新模型时测试排队等待解包的事实

it "should enqueue job to unpack test on s3 on creating <model_name>" do
  Resque.should_receive(:enqueue).with(UnpackTestOnS3, <parent_id>)
end

it "should enqueue job to unpack test on s3 on updating <model_name>" do
  Resque.should_receive(:enqueue).with(UnpackTestOnS3, <parent_id>)
end

it "should not enqueue job to unpack test on s3 when the <model_name>'s parent is not for test" do
  Resque.should_not_receive(:enqueue).with(UnpackTestOnS3, <parent_id>)
end