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