是否存在与mockito ArgumentCaptor等效的rspec?

时间:2018-05-14 22:02:37

标签: ruby-on-rails rspec mockito

我有一个使用ArgumentCaptor的java项目,以断言对特定模拟对象(存根)的调用。是否有等效的Rails Rspec ArgumentCaptor? 我希望能够模拟一个ActiveRecord模型并比较断言传递给保存调用的参数。

更新1

以下是使用ArgumentCaptor的Java代码示例。请注意,能够修饰模拟以收集传递给您正在测试的方法的所有对象,然后对它们进行断言。

var myString = "George's - super duper (Computer)";

var myOtherString = myString
  // Remove non-whitespace, non-alphanumeric characters from the string (note: ^ inverses the character class)
  // also trim any whitespace from the beginning and end of the string (so we don't end up with hyphens at the start and end of the string)
  .replace(/^\s+|[^\s\w]+|\s+$/g, "")

  // Replace the remaining whitespace with hyphens
  .replace(/\s+/g, "-")

  // Finally make all characters lower case
  .toLowerCase();

console.log(myString, '=>', myOtherString);

2 个答案:

答案 0 :(得分:0)

这似乎是在RSpec中实现Mockito的首次尝试: rspec-fire

RSpec3现在支持Mocks: rspec3-mocks

Sandi Metz关于Mocks的话题很好: TDD magic tricks

关于Ruby中的Mocks的讨论非常有用: Why you don't know mocks

答案 1 :(得分:0)

RSpec 对模拟的支持允许使用块,它提供了“捕获”参数的可能性,如下所示

expect(a_mock).to receive(:save) {|arg| expect(arg.name).to eq "name"}