Rails 单元测试,FlexMock 0.9.6 发布
openkk 12年前
<p><a href="/misc/goto?guid=4958197824004491022" target="_blank">FlexMock</a>是一个比较流行的针对Rails单元测试的Mock工具,</p> <p>安装方法:$ gem install flexmock<br /> <br /> FlexMock 0.9.6 发布,该版本修复了类实例的静态方法、kwargs 顺序比较、返回值字符串呈现的测试问题;同时测试对象的参数签名不再强制执行。</p> <p>代码示例:</p> <pre class="brush:ruby; toolbar: true; auto-links: false;">require 'test/unit' require 'flexmock/test_unit' class TemperatureSampler def initialize(sensor) @sensor = sensor end def average_temp total = (0...3).collect { @sensor.read_temperature }.inject { |i, s| i + s } total / 3.0 end end class TestTemperatureSampler < Test::Unit::TestCase def test_sensor_can_average_three_temperature_readings sensor = flexmock("temp") sensor.should_receive(:read_temperature).times(3). and_return(10, 12, 14) sampler = TemperatureSampler.new(sensor) assert_equal 12, sampler.average_temp end end</pre> <p></p>