Ruby RSpec:模拟、存根和验证

Ruby RSpec:模拟、存根和验证,ruby,testing,rspec,tdd,rspec-mocks,Ruby,Testing,Rspec,Tdd,Rspec Mocks,我正在为(IRC机器人)编写一个插件,并尝试为它编写一些RSpec测试 然而,我正试图掌握RSpec,并模拟出这个插件的外部依赖性。现在,我想测试两种不同的东西——它向人们打招呼,并且跟踪向谁打招呼 所以我有一个方法,say_hello,它接受一个Cinch::Message。模仿这门课最简单的方法是什么?我习惯于Mockito和Java,所以我习惯于对特定类进行模拟 我怎样才能模仿Cinch::Message?在我的第一个测试中,我想断言对该消息调用了reply方法。在下一个示例中,我只希望它

我正在为(IRC机器人)编写一个插件,并尝试为它编写一些RSpec测试

然而,我正试图掌握RSpec,并模拟出这个插件的外部依赖性。现在,我想测试两种不同的东西——它向人们打招呼,并且跟踪向谁打招呼

所以我有一个方法,
say_hello
,它接受一个
Cinch::Message
。模仿这门课最简单的方法是什么?我习惯于Mockito和Java,所以我习惯于对特定类进行模拟

我怎样才能模仿
Cinch::Message
?在我的第一个测试中,我想断言对该消息调用了
reply
方法。在下一个示例中,我只希望它像
Cinch::Message
那样响应,因为我只关心类的跟踪,而不关心与消息的交互

我刚开始学RSpec,所以可能我遗漏了一些基本的东西。我应该用模拟的吗?存根


谢谢

首先,文档将是一个很好的起点,请参见:

..这就是你的测试结果:

it 'should call #reply on the message'
  message = double('cinch message')
  message.should_receive(:reply)
  object_under_test.say_hello(message)
end