คำถามติดแท็ก mocking

การเยาะเย้ยและการแกล้งเป็นวิธีในการแยกรหัสหรือส่วนประกอบเพื่อให้แน่ใจว่าการทดสอบหน่วยทำงานกับหน่วยที่ทดสอบได้ของรหัสเท่านั้นโดยไม่ต้องใช้ส่วนประกอบอื่น ๆ หรือการพึ่งพาของแอปพลิเคชัน การเยาะเย้ยนั้นแตกต่างจากการแกล้งซึ่งเยาะเย้ยสามารถตรวจสอบเพื่อยืนยันผลการทดสอบ

5
จำลองตัวสร้างด้วยพารามิเตอร์
ฉันมีคลาสดังนี้: public class A { public A(String test) { bla bla bla } public String check() { bla bla bla } } ตรรกะในตัวสร้างA(String test)และcheck()เป็นสิ่งที่ฉันพยายามล้อเลียน ฉันต้องการโทรใด ๆ เช่น: ผลตอบแทนสตริงหุ่นnew A($$$any string$$$).check()"test" ฉันเหนื่อย: A a = mock(A.class); when(a.check()).thenReturn("test"); String test = a.check(); // to this point, everything works. test shows as "tests" …

4
การโทรกลับแบบจำลองและการรับค่าอาร์กิวเมนต์
ฉันไม่มีโชคเลยที่ได้รับ Mockito เพื่อจับค่าอาร์กิวเมนต์ของฟังก์ชัน! ฉันล้อเลียนดัชนีของเครื่องมือค้นหาและแทนที่จะสร้างดัชนีฉันแค่ใช้แฮช // Fake index for solr Hashmap<Integer,Document> fakeIndex; // Add a document 666 to the fakeIndex SolrIndexReader reader = Mockito.mock(SolrIndexReader.class); // Give the reader access to the fake index Mockito.when(reader.document(666)).thenReturn(document(fakeIndex(666)) ฉันไม่สามารถใช้อาร์กิวเมนต์ตามอำเภอใจได้เนื่องจากฉันกำลังทดสอบผลลัพธ์ของการสืบค้น (เช่นเอกสารที่ส่งคืน) ในทำนองเดียวกันฉันไม่ต้องการระบุค่าเฉพาะและมีบรรทัดสำหรับแต่ละเอกสาร! Mockito.when(reader.document(0)).thenReturn(document(fakeIndex(0)) Mockito.when(reader.document(1)).thenReturn(document(fakeIndex(1)) .... Mockito.when(reader.document(n)).thenReturn(document(fakeIndex(n)) ผมมองไปที่ส่วนของการเรียกกลับในการใช้ Mockitoหน้า น่าเสียดายที่มันไม่ใช่ Java และฉันไม่สามารถตีความว่ามันทำงานใน Java ได้ แก้ไข (เพื่อความชัดเจน): ฉันจะให้ …

6
ฉันจะใช้ Moq เพื่อจำลองวิธีการขยายได้อย่างไร
ฉันกำลังเขียนการทดสอบที่ขึ้นอยู่กับผลลัพธ์ของวิธีการขยาย แต่ฉันไม่ต้องการให้ความล้มเหลวในอนาคตของวิธีการขยายนั้นทำลายการทดสอบนี้ การเยาะเย้ยผลลัพธ์นั้นดูเหมือนเป็นทางเลือกที่ชัดเจน แต่Moq ดูเหมือนจะไม่เสนอวิธีที่จะแทนที่วิธีการแบบคงที่ (ข้อกำหนดสำหรับวิธีการขยาย) มีความคิดที่คล้ายกันกับ Moq.Protected และ Moq.Stub แต่ดูเหมือนจะไม่เสนออะไรให้กับสถานการณ์นี้ ฉันพลาดอะไรไปหรือฉันควรจะไปทางอื่น นี่เป็นตัวอย่างเล็ก ๆ น้อย ๆ ที่ล้มเหลวด้วยปกติ"ความคาดหวังที่ไม่ถูกต้องเกี่ยวกับการเป็นสมาชิกที่ไม่ใช่ overridable" นี่เป็นตัวอย่างที่ไม่ดีที่ต้องล้อเลียนวิธีการขยาย แต่ควรทำ public class SomeType { int Id { get; set; } } var ListMock = new Mock<List<SomeType>>(); ListMock.Expect(l => l.FirstOrDefault(st => st.Id == 5)) .Returns(new SomeType { Id = 5 }); …

3
วิธีจับคู่ null ที่ส่งผ่านไปยังพารามิเตอร์ของ Class <T> กับ Mockito
ฉันมีวิธีการดังนี้: public &lt;T&gt; method(String s, Class&lt;T&gt; t) {...} ฉันต้องตรวจสอบว่าnullส่งผ่านไปยังอาร์กิวเมนต์ที่สองเมื่อใช้ตัวจับคู่กับพารามิเตอร์อื่นฉันได้ทำสิ่งนี้แล้ว: @SuppressWarnings("unchecked") verify(client).method(eq("String"), any(Class.class)); แต่มีวิธีที่ดีกว่า (โดยไม่มีคำเตือนการระงับ) หรือไม่? Tแสดงถึงประเภทการส่งคืนของวิธีการอื่น ๆ ซึ่งบางครั้งvoidและในกรณีเหล่านี้nullจะถูกส่งเข้ามา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.