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

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

11
ตรวจสอบค่าแอตทริบิวต์ของวัตถุด้วย mockito
ฉันมีวิธีการโทรซึ่งฉันต้องการที่จะเยาะเย้ยกับ mockito เริ่มต้นด้วยฉันได้สร้างและฉีดอินสแตนซ์ของวัตถุที่เรียกว่าวิธีการ จุดประสงค์ของฉันคือการตรวจสอบหนึ่งในวัตถุในวิธีการโทร มีวิธีที่ mockito ช่วยให้คุณสามารถยืนยันหรือตรวจสอบวัตถุและมันเป็นคุณลักษณะเมื่อมีการเรียกวิธีการจำลอง? ตัวอย่าง Mockito.verify(mockedObject) .someMethodOnMockedObject( Mockito.<SomeObjectAsArgument>anyObject()) แทนที่จะทำanyObject()ฉันต้องการตรวจสอบว่าวัตถุอาร์กิวเมนต์มีบางฟิลด์ Mockito.verify(mockedObject) .someMethodOnMockedObject( Mockito.<SomeObjectAsArgument>**compareWithThisObject()**)
264 java  mocking  mockito 

11
วิธีการตรวจสอบ String ในการตอบสนองเนื้อหาด้วย mockMvc
ฉันมีการทดสอบการรวมอย่างง่าย @Test public void shouldReturnErrorMessageToAdminWhenCreatingUserWithUsedUserName() throws Exception { mockMvc.perform(post("/api/users").header("Authorization", base64ForTestUser).contentType(MediaType.APPLICATION_JSON) .content("{\"userName\":\"testUserDetails\",\"firstName\":\"xxx\",\"lastName\":\"xxx\",\"password\":\"xxx\"}")) .andDo(print()) .andExpect(status().isBadRequest()) .andExpect(?); } ในบรรทัดสุดท้ายฉันต้องการเปรียบเทียบสตริงที่ได้รับในเนื้อความการตอบสนองกับสตริงที่คาดหวัง และในการตอบสนองฉันได้รับ: MockHttpServletResponse: Status = 400 Error message = null Headers = {Content-Type=[application/json]} Content type = application/json Body = "Username already taken" Forwarded URL = null Redirected URL = null ลองใช้เทคนิคบางอย่างกับเนื้อหา (), เนื้อหา () แต่ไม่มีอะไรทำงาน

9
ฉันจะจำลองคำขอและการตอบสนองได้อย่างไร
ฉันกำลังพยายามใช้แพคเกจจำลอง Pythons เพื่อจำลองrequestsโมดูลPythons อะไรคือการโทรพื้นฐานเพื่อให้ฉันทำงานในสถานการณ์ด้านล่าง ใน views.py ของฉันฉันมีฟังก์ชั่นที่ทำให้การร้องขอที่หลากหลายรับ () พร้อมการตอบสนองที่แตกต่างกันในแต่ละครั้ง def myview(request): res1 = requests.get('aurl') res2 = request.get('burl') res3 = request.get('curl') ในชั้นทดสอบของฉันฉันต้องการทำสิ่งนี้ แต่ไม่สามารถหาวิธีการโทรที่แน่นอนได้ ขั้นตอนที่ 1: # Mock the requests module # when mockedRequests.get('aurl') is called then return 'a response' # when mockedRequests.get('burl') is called then return 'b response' # when mockedRequests.get('curl') …
222 python  mocking  request 

11
ใช้ Mockito เพื่อทดสอบคลาสนามธรรม
ฉันต้องการทดสอบคลาสนามธรรม แน่นอนว่าฉันสามารถเขียนจำลองที่สืบทอดมาจากคลาสได้ด้วยตนเอง ฉันสามารถทำสิ่งนี้โดยใช้กรอบการเยาะเย้ย (ฉันใช้ Mockito) แทนการประดิษฐ์จำลองด้วยมือของฉันได้หรือไม่? อย่างไร?

5
จะบอกวัตถุจำลอง Mockito ให้คืนสิ่งที่แตกต่างในครั้งต่อไปที่เรียกได้อย่างไร
ดังนั้นฉันกำลังสร้างวัตถุจำลองเป็นตัวแปรแบบคงที่ในระดับชั้นเช่นนี้ ... ในการทดสอบหนึ่งฉันต้องการFoo.someMethod()คืนค่าบางค่าในขณะที่การทดสอบอื่นฉันต้องการให้คืนค่าที่แตกต่างกัน ปัญหาที่ฉันมีคือดูเหมือนว่าฉันต้องสร้าง mocks ขึ้นใหม่เพื่อให้ทำงานได้อย่างถูกต้อง ฉันต้องการหลีกเลี่ยงการสร้าง mocks ขึ้นใหม่และใช้วัตถุเดียวกันในการทดสอบแต่ละครั้ง class TestClass { private static Foo mockFoo; @BeforeClass public static void setUp() { mockFoo = mock(Foo.class); } @Test public void test1() { when(mockFoo.someMethod()).thenReturn(0); TestObject testObj = new TestObject(mockFoo); testObj.bar(); // calls mockFoo.someMethod(), receiving 0 as the value } @Test public void …

4
การใช้วิธีการทั่วไป "any ()" ของ Mockito
ฉันมีอินเตอร์เฟซที่มีวิธีการที่คาดว่าอาร์เรย์ของFoo: public interface IBar { void doStuff(Foo[] arr); } ฉันกำลังเยาะเย้ยอินเทอร์เฟซนี้โดยใช้ Mockito และฉันต้องการยืนยันที่doStuff()เรียกว่า แต่ฉันไม่ต้องการที่จะตรวจสอบข้อโต้แย้งที่ผ่าน - "ไม่สนใจ" ฉันจะเขียนรหัสต่อไปนี้โดยใช้any()วิธีการทั่วไปได้anyObject()อย่างไร IBar bar = mock(IBar.class); ... verify(bar).doStuff((Foo[]) anyObject());

8
ฉันจะเลียนแบบการเปิดที่ใช้ในคำสั่ง with (โดยใช้กรอบการจำลองใน Python) ได้อย่างไร?
ฉันจะทดสอบโค้ดต่อไปนี้ด้วย mocks ได้อย่างไร (โดยใช้ mocks เครื่องมือตกแต่งแพทช์และรักษาการณ์ที่จัดทำโดยกรอบงานจำลองของ Michael Foord ) def testme(filepath): with open(filepath, 'r') as f: return f.read()

4
จำลอง HttpContext.Current ในวิธีทดสอบ Init
ฉันกำลังพยายามเพิ่มการทดสอบหน่วยในแอปพลิเคชัน ASP.NET MVC ที่ฉันสร้างขึ้น ในการทดสอบหน่วยของฉันฉันใช้รหัสต่อไปนี้: [TestMethod] public void IndexAction_Should_Return_View() { var controller = new MembershipController(); controller.SetFakeControllerContext("TestUser"); ... } ด้วยผู้ช่วยดังต่อไปนี้ในการจำลองบริบทของตัวควบคุม: public static class FakeControllerContext { public static HttpContextBase FakeHttpContext(string username) { var context = new Mock<HttpContextBase>(); context.SetupGet(ctx => ctx.Request.IsAuthenticated).Returns(!string.IsNullOrEmpty(username)); if (!string.IsNullOrEmpty(username)) context.SetupGet(ctx => ctx.User.Identity).Returns(FakeIdentity.CreateIdentity(username)); return context.Object; } public static void SetFakeControllerContext(this …

4
การยืนยันการเรียกไปยังเมธอด mock อย่างต่อเนื่อง
จำลองมีประโยชน์assert_called_with()วิธี อย่างไรก็ตามเท่าที่ฉันเข้าใจการตรวจสอบเพียงโทรครั้งสุดท้ายเพื่อวิธีการ หากฉันมีรหัสที่เรียกใช้วิธีการเยาะเย้ย 3 ครั้งติดต่อกันแต่ละครั้งด้วยพารามิเตอร์ที่แตกต่างกันฉันจะยืนยันการโทร 3 ครั้งนี้ด้วยพารามิเตอร์เฉพาะได้อย่างไร
175 python  mocking 

7
เยาะเย้ยวิธีการขยายด้วยขั้นต่ำ
ฉันมีส่วนต่อประสานก่อนหน้า ... public interface ISomeInterface { void SomeMethod(); } และฉันได้ขยายอินเทอร์เฟซนี้โดยใช้มิกซ์อิน ... public static class SomeInterfaceExtensions { public static void AnotherMethod(this ISomeInterface someInterface) { // Implementation here } } ฉันมีคลาสที่เรียกสิ่งนี้ซึ่งฉันต้องการทดสอบ ... public class Caller { private readonly ISomeInterface someInterface; public Caller(ISomeInterface someInterface) { this.someInterface = someInterface; } public void Main() { …

5
โยนการตรวจสอบข้อยกเว้นจาก mocks กับ Mockito
ฉันกำลังพยายามให้วัตถุที่เยาะเย้ยคนหนึ่งของฉันโยนข้อยกเว้นที่เลือกไว้เมื่อเรียกวิธีการเฉพาะ ฉันกำลังพยายามดังต่อไปนี้ @Test(expectedExceptions = SomeException.class) public void throwCheckedException() { List<String> list = mock(List.class); when(list.get(0)).thenThrow(new SomeException()); String test = list.get(0); } public class SomeException extends Exception { } อย่างไรก็ตามนั่นทำให้เกิดข้อผิดพลาดดังต่อไปนี้ org.testng.TestException: Expected exception com.testing.MockitoCheckedExceptions$SomeException but got org.mockito.exceptions.base.MockitoException: Checked exception is invalid for this method! Invalid: com.testing.MockitoCheckedExceptions$SomeException ดูที่เอกสาร Mockito ที่พวกเขาใช้เท่านั้นRuntimeExceptionเป็นไปไม่ได้ที่จะโยนการตรวจสอบยกเว้นจากวัตถุจำลองด้วย Mockito?
173 java  mocking  mockito 

9
วิธีการจำลองคำร้องขอบนคอนโทรลเลอร์ใน ASP.Net MVC
ฉันมีคอนโทรลเลอร์ใน C # โดยใช้เฟรมเวิร์ก ASP.Net MVC public class HomeController:Controller{ public ActionResult Index() { if (Request.IsAjaxRequest()) { //do some ajaxy stuff } return View("Index"); } } ฉันได้รับคำแนะนำเกี่ยวกับการเยาะเย้ยและหวังว่าจะทดสอบโค้ดด้วย RhinoMocks ต่อไปนี้ var mocks = new MockRepository(); var mockedhttpContext = mocks.DynamicMock<HttpContextBase>(); var mockedHttpRequest = mocks.DynamicMock<HttpRequestBase>(); SetupResult.For(mockedhttpContext.Request).Return(mockedHttpRequest); var controller = new HomeController(); controller.ControllerContext = new …

1
Python จำลองค่าที่ส่งคืนหลายค่า
ฉันใช้ pythons mock.patch และต้องการเปลี่ยนค่าตอบแทนสำหรับการโทรแต่ละครั้ง นี่คือข้อแม้: ฟังก์ชันที่กำลังแก้ไขไม่มีอินพุตดังนั้นฉันจึงไม่สามารถเปลี่ยนค่าส่งคืนตามอินพุตได้ นี่คือรหัสของฉันสำหรับการอ้างอิง def get_boolean_response(): response = io.prompt('y/n').lower() while response not in ('y', 'n', 'yes', 'no'): io.echo('Not a valid input. Try again']) response = io.prompt('y/n').lower() return response in ('y', 'yes') รหัสทดสอบของฉัน: @mock.patch('io') def test_get_boolean_response(self, mock_io): #setup mock_io.prompt.return_value = ['x','y'] result = operations.get_boolean_response() #test self.assertTrue(result) self.assertEqual(mock_io.prompt.call_count, 2) …

11
วัตถุประสงค์ของการจำลองวัตถุคืออะไร?
ฉันยังใหม่กับการทดสอบหน่วยและฉันได้ยินคำว่า 'วัตถุจำลอง' อย่างต่อเนื่องโยนไปมามาก ในแง่ของคนธรรมดาคนสามารถอธิบายว่าอะไรคือวัตถุจำลองและสิ่งที่พวกเขามักจะใช้เมื่อเขียนการทดสอบหน่วย?

3
ใช้ Moq เพื่อตรวจสอบว่ามีการเรียกใช้เมธอดหรือไม่
เป็นความเข้าใจของฉันที่ฉันสามารถทดสอบว่าการเรียกใช้เมธอดจะเกิดขึ้นหากฉันเรียกเมธอดระดับสูงกว่าเช่น: public abstract class SomeClass() { public void SomeMehod() { SomeOtherMethod(); } internal abstract void SomeOtherMethod(); } ฉันต้องการทดสอบว่าถ้าฉันโทรSomeMethod()แล้วฉันคาดว่ามันSomeOtherMethod()จะถูกเรียก ฉันคิดถูกหรือเปล่าว่าการทดสอบประเภทนี้มีอยู่ในกรอบการเยาะเย้ยหรือไม่
159 c#  .net  unit-testing  mocking  moq 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.