16
使用Mockito's examples page中最基本的示例,我能夠在JUnit中成功運行。Simple Mockito驗證在JUnit中有效,但不是Spock
但是,當我在Spock中運行相同的測試時,它失敗。
的JUnit/Java版本(這通過):
import org.junit.Test;
import java.util.List;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
public class SimpleJunitTest
{
@Test
public void basicMockTest()
{
List mockedList = mock(List.class);
//using mock object
mockedList.add("one");
mockedList.clear();
//verification
verify(mockedList).add("one");
verify(mockedList).clear();
}
}
斯波克/ Groovy的版本(失敗):
import static org.mockito.Mockito.mock
import static org.mockito.Mockito.verify
class SimpleSpockTest extends spock.lang.Specification
{
def "Basic Mock Test"()
{
given:
//mock creation
List mockedList = mock(List.class);
when:
//using mock object
mockedList.add("one");
mockedList.clear();
then:
//verification
verify(mockedList).add("one");
verify(mockedList).clear();
}
}
以下是錯誤我得到當斯波克測試失敗:
Condition not satisfied:
verify(mockedList).add("one")
| | |
| | false
| [email protected] (renderer threw
NullPointerException)
[email protected] (renderer threw
NullPointerException)
at SimpleSpockTest.Basic Mock Test(SimpleSpockTest.groovy:25)
任何想法或建議嗎?我非常喜歡Spock和Mockito,並希望讓他們一起工作。非常感謝你!
得說,試圖避免它,但Spoke的模擬驗證錯誤信息是相當驚人的真棒。 –
謝謝。偉大的錯誤消息當然是Mockito的商標。幸運的是,我經常從Szczepan(Mockito的創建者)那裏獲得有關如何改進Spock錯誤消息的反饋,並且大部分時間我都在聽他說的話。 :-) –
因爲我需要模擬一些Spring組件,並且仍然無法使用Spock模擬來做這件事,而且我發現'Mockito.verify(mock)「,所以我回過頭來看了一會兒。 foo(bar)|| true'對我來說工作得很好,而且是合理可讀的。 – chrylis