man*_*noj 4 ruby unit-testing minitest
我只想为一个测试和其他测试添加一个类方法,我想调用实际方法。我一直在使用rspec和mocha,因此以下行为看起来很奇怪。
我想在一项测试中存根的课程。
class MyClass
def self.foo(arg)
return "foo#{arg}"
end
end
Run Code Online (Sandbox Code Playgroud)
我尝试对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
Run Code Online (Sandbox Code Playgroud)
第一次测试通过,但是第二次测试失败,说明Mocha :: ExpectationError:意外调用:MyClass.foo('123')
在test_2中,我希望调用实际的类方法,而不是我在test_1中执行的存根。
PS:上面是一个简化的示例。我不想每次都重置,所以我对类方法进行了设置。
块中的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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2353 次 |
| 最近记录: |