我試圖用JMock模擬下面的方法,我遇到了一個編譯器錯誤。嘲笑通用參數
類嘲笑:
public interface myClass<T extends SomeClass>{
public void myMethod(T parameter);
public void myOtherMethod();
}
模擬後市展望:
exactly(1).of(myClassMocked).myOtherMethod();
exactly(1).of(myClassMocked).myMethod(with(any(SomeClass.class)));
編譯錯誤:
The method myMethod(capture#6-of ?) in the type myClass is not applicable for the arguments (SomeClass)
我有嘗試將Object.class與其他兼容類切換並與匹配器一起玩。
我無法簡單地更改方法簽名,這太容易了。
它的長短是我想忽略這個特殊的方法調用,但我不能忽略整個MyClass模擬,因爲它是我用於我的測試方法中的其他任務的服務。
編輯: 的解決方法是改變 final myClass<?> myClassMocked= mockery.mock(myClass.class);
(由蝕建議通用規格),以 final myClass<SomeClass> myClassMocked= mockery.mock(myClass.class);
我正要重構我的測試類時,我注意到,當我宣佈我的模擬,我是路過它是一個通配符。我改變了這一切,現在一切正在進行。感謝您指點我正確的方向。 – AnthonyW