我是Groovy的新手(對於JMock而言也是如此),並且在構建使用匹配器的模擬參數上的期望方面遇到了一些麻煩。當我嘗試做這樣的事情:在Groovy中使用JMock的Hamcrest匹配器
Expectations e = new Expectations();
e.allowing(mockObject).doSomething(Expectations.with(aNonNull(ImmutableCollection.class)))
e.will(returnValue(someResponse))
它構建的期望值時,將導致以下錯誤:
groovy.lang.MissingMethodException: No signature of method: static org.jmock.Expectations.with() is applicable for argument types: (org.hamcrest.core.IsNot) values: [not null]
Possible solutions: with(boolean), with(org.hamcrest.Matcher), with(byte), with(org.hamcrest.Matcher), with(char), with(org.hamcrest.Matcher)
aNonNull返回Matcher<T>
(org.hamcrest.core.IsNot實現Matcher<T>
)和有一個採用匹配器的Expectations.with方法,所以我不確定爲什麼Groovy試圖找到一個帶有具體類而不是由aNonNull指定的接口的版本。我也嘗試將aNonNull的返回值轉換爲匹配器和Matcher<T>
,而不會對錯誤進行任何更改。我不確定是否有關於混淆Groovy的泛型或其他需要檢查的內容。
有涉及利基技術。因此,不太可能找到具有*déjàvu *經驗的人。然而,如果你可以將問題分解成一個最新的,可重複的測試用例,我相信這個問題可以被清除(如果不解決的話)。 – robbbert 2010-12-01 02:00:30