我试图让我的头脑围绕测试驱动的设计,特别是RSpec.但是我从RSpec Book的一些例子中遇到麻烦.
在本书中,我们以$STDOUT的形式测试输出:
output = double('output') game = Game.new output.should_receive(:puts).with('Welcome to Codebreaker!') game.start()
那么,一个时尚之后的工作.但是为什么我应该关心Game对象使用puts()方法?如果我将其更改为print(),是否真的打破测试?而且更重要的是,这不是针对TDD的原则之一 – 我应该测试该方法(设计),而不是如何(实现)?
有没有办法我可以写一个测试,只是测试结果在$STDOUT,而不看什么方法把它放在那里?