0
我是JMock的新手,试图通过Scala进行简单的单元测试。测试是模拟一个接口,然后在模拟接口上执行一个方法之前设置一些xpectations。JMock和Scala - 意外的调用错误
val context = new Mockery
val mockObj= context.mock(classOf[SomeClassInterface])
@Test def sometest = {
context.checking(
new Expectations() {
allowing (mockObj).doFunc1();
will(returnValue(someResponse);
allowing (mockObj).doFunc2(someResponse);
will(returnValue(someResponse));
allowing (mockObj).doFunc3(someResponse);
will(returnValue("Enabled"));
}
)
var status:String = mockObj.doSomething()
//context.assertIsSatisfied();
Assert.assertTrue(status.equalsIgnoreCase("Enabled"))
}
这导致错误;
意外的调用; mockObj.doSomething().........在这之前发生了什么;没有!
任何想法出了什么问题?
您的期望不允许调用doSomething方法。它们只允许在'mockObj'上调用'doFunc1','doFunc2'和'doFunc3'(并且根本不调用这些方法,为什么要允许它们?)。 – 2013-03-19 14:57:01
我认为这个想法只是设定可能被称为doSomething的副产品的方法的期望。在我的情况下,只要发生doSomething的调用,就会导致doFunc1 2&3方法被调用 – cduggan 2013-03-19 15:26:50
原因如何?你说'SomeClassInterface'是一个接口,所以没有'doSomething'的实现。无论如何,即使有一个实现,创建一个模拟对象的整个想法是不使用它。 – 2013-03-19 20:24:09