我正在尝试将flexmock与test/unit一起使用来为我的单元测试创建模拟对象。这是我正在测试的课程:
class Cave
def hunt
# not yet implemented
end
end
这是我的单元测试(请注意,此方法只是测试用例中众多方法之一):
require 'test/unit'
require 'flexmock/test_unit'
require 'cave'
def test_play
hunter = flexmock()
cave = Cave.new
cave.hunter = hunter
hunter.should_receive(:turn).with(FlexMock.any).at_least.once
cave.hunt
end
该测试应该验证该hunt
方法是否将turn
消息发送到分配给cave
'hunter
属性的对象至少一次。
如果我正确理解了文档,flexmock会与单元测试框架结合并自动验证测试中定义的期望。因此,我预计上述测试会失败,因为该方法hunt
尚未发送turn
。但是,测试成功。
我错过了什么吗?
更新:我设置了一个新文件,其中仅包含一个最小测试,以查看 flex mock 是否可以按预期工作。以下测试产生预期结果,即失败:
require 'test/unit'
require 'flexmock/test_unit'
class TestFoo < Test::Unit::TestCase
def test_foo
m=flexmock()
m.should_receive(:bar).and_return(17).once
end
end