我想为一个测试存在一个类方法,对于其余的测试,我希望调用实际的方法。我一直在使用rspec和mocha,所以下面的行为看起来很奇怪。
我希望在我的一个测试中存根的类。
class MyClass
def self.foo(arg)
return "foo#{arg}"
end
end
我尝试存根MyClass.foo的测试
class XYZTest < Minitest::Test
def test_1
MyClass.expects(:foo).returns('abcd')
assert_equal MyClass.foo('123'), 'abcd'
end
def test_2
assert_equal MyClass.foo('123'), 'foo123'
end
end
第一个测试通过,但是第二个测试失败,说明了Mocha :: ExpectationError:意外调用:MyClass.foo('123')
在test_2中,我希望调用实际的类方法,而不是我在test_1中执行的存根。
PS:上面是一个条纹下来的例子。我不想每次都重置,我将类方法存根。
答案 0 :(得分:3)
块中的Minitest存根方法,所以你要做的就是简单。
class XYZTest < Minitest::Test
# stubbed here
def test_1
MyClass.stub(:foo, 'abcd') do
assert_equal MyClass.foo('123'), 'abcd'
end
end
# not stubbed here
def test_2
assert_equal MyClass.foo('123'), 'foo123'
end
end