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

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

18
กำลังพยายามจำลอง datetime.date.today () แต่ไม่ทำงาน
มีใครบอกฉันได้ไหมว่าทำไมสิ่งนี้ถึงไม่ทำงาน >>> import mock >>> @mock.patch('datetime.date.today') ... def today(cls): ... return date(2010, 1, 1) ... >>> from datetime import date >>> date.today() datetime.date(2010, 12, 19) บางทีบางคนอาจแนะนำวิธีที่ดีกว่า

8
วิธีทดสอบยูนิต Node.js ที่ต้องใช้โมดูลอื่นและวิธีการจำลองฟังก์ชันการทำงานแบบโกลบอล
นี่เป็นตัวอย่างเล็กน้อยที่แสดงให้เห็นถึงปมปัญหาของฉัน: var innerLib = require('./path/to/innerLib'); function underTest() { return innerLib.doComplexStuff(); } module.exports = underTest; ฉันพยายามเขียนการทดสอบหน่วยสำหรับรหัสนี้ ฉันจะเยาะเย้ยความต้องการสำหรับinnerLibโดยไม่ต้องเยาะเย้ยrequireฟังก์ชั่นทั้งหมดได้อย่างไร ดังนั้นนี่คือฉันพยายามที่จะเยาะเย้ยทั่วโลกrequireและพบว่ามันจะไม่ทำงานแม้จะทำเช่นนั้น: var path = require('path'), vm = require('vm'), fs = require('fs'), indexPath = path.join(__dirname, './underTest'); var globalRequire = require; require = function(name) { console.log('require: ' + name); switch(name) { case 'connect': case indexPath: return …

8
ฉันจะจำลองบริการที่คืนสัญญาในการทดสอบหน่วยจัสมินของ AngularJS ได้อย่างไร
ฉันมีmyServiceสิ่งที่ใช้myOtherServiceซึ่งทำให้การโทรระยะไกลคืนสัญญา: angular.module('app.myService', ['app.myOtherService']) .factory('myService', [ myOtherService, function(myOtherService) { function makeRemoteCall() { return myOtherService.makeRemoteCallReturningPromise(); } return { makeRemoteCall: makeRemoteCall }; } ]) ในการสร้างการทดสอบหน่วยสำหรับmyServiceฉันต้องเยาะเย้ยmyOtherServiceเช่นนั้นmakeRemoteCallReturningPromiseวิธีการของมันจะให้สัญญา นี่คือวิธีที่ฉันทำ: describe('Testing remote call returning promise', function() { var myService; var myOtherServiceMock = {}; beforeEach(module('app.myService')); // I have to inject mock when calling module(), // and module() should …

9
วิธีจับคู่ varargs ใน Mockito อย่างถูกต้อง
ฉันพยายามจำลองวิธีด้วยพารามิเตอร์ vararg โดยใช้ Mockito: interface A { B b(int x, int y, C... c); } A a = mock(A.class); B b = mock(B.class); when(a.b(anyInt(), anyInt(), any(C[].class))).thenReturn(b); assertEquals(b, a.b(1, 2)); สิ่งนี้ใช้ไม่ได้อย่างไรก็ตามถ้าฉันทำสิ่งนี้แทน: when(a.b(anyInt(), anyInt())).thenReturn(b); assertEquals(b, a.b(1, 2)); ใช้งานได้แม้ว่าฉันจะไม่ได้โต้แย้งอาร์กิวเมนต์ varargs ทั้งหมดเมื่อทำการขัดวิธี เบาะแสใด ๆ

2
ตรวจพบ Stubbing ที่ยังไม่เสร็จใน Mockito
ฉันได้รับข้อยกเว้นต่อไปนี้ขณะทำการทดสอบ ฉันใช้ Mockito เพื่อการเยาะเย้ย คำแนะนำที่กล่าวถึงโดยห้องสมุด Mockito ไม่ได้ช่วยอะไร org.mockito.exceptions.misusing.UnfinishedStubbingException: Unfinished stubbing detected here: -> at com.a.b.DomainTestFactory.myTest(DomainTestFactory.java:355) E.g. thenReturn() may be missing. Examples of correct stubbing: when(mock.isOk()).thenReturn(true); when(mock.isOk()).thenThrow(exception); doThrow(exception).when(mock).someVoidMethod(); Hints: 1. missing thenReturn() 2. you are trying to stub a final method, you naughty developer! at a.b.DomainTestFactory.myTest(DomainTestFactory.java:276) .......... DomainTestFactoryรหัสการทดสอบจาก เมื่อฉันรันการทดสอบต่อไปนี้ฉันเห็นข้อยกเว้น @Test public …
151 java  mocking  mockito 

9
ฟังก์ชั่นหลามเยาะเย้ยตามข้อโต้แย้งอินพุต
เราใช้Mockกับ python มาระยะหนึ่งแล้ว ตอนนี้เรามีสถานการณ์ที่เราต้องการจำลองฟังก์ชั่น def foo(self, my_param): #do something here, assign something to my_result return my_result โดยปกติวิธีการเยาะเย้ยนี้จะเป็น (สมมติว่าเป็นส่วนหนึ่งของวัตถุ foo) self.foo = MagicMock(return_value="mocked!") แม้ว่าฉันจะโทรหา foo () สองครั้งฉันก็สามารถใช้ได้ self.foo = MagicMock(side_effect=["mocked once", "mocked twice!"]) ตอนนี้ฉันกำลังเผชิญสถานการณ์ที่ฉันต้องการคืนค่าคงที่เมื่อพารามิเตอร์อินพุตมีค่าเฉพาะ ถ้าสมมุติว่า "my_param" เท่ากับ "อะไรบางอย่าง" แล้วฉันต้องการคืน "my_cool_mock" ดูเหมือนว่าจะมีให้ในmockito สำหรับไพ ธ อน when(dummy).foo("something").thenReturn("my_cool_mock") ฉันค้นหาวิธีการที่จะประสบความสำเร็จกับ Mock โดยไม่ประสบความสำเร็จได้อย่างไร ความคิดใด ๆ

5
อะไรคือความแตกต่างระหว่าง mocks และต้นขั้วบน Rhino Mocks?
ฉันไม่ได้เล่นกับสิ่งนี้มากพอและมักจะใช้ mocks แต่ฉันสงสัยว่าอะไรคือความแตกต่างระหว่างสองนี้และเมื่อใช้อย่างใดอย่างหนึ่งกับอีกหนึ่งในแรด Mocks ปรับปรุง: ฉันยังพบคำตอบสำหรับคำถามของฉันในคำพูดของ Ayende : ความแตกต่างระหว่างสมบูรณ์และ mocks คุณจะได้รับความหมายที่แท้จริงของคำเหล่านี้ในบทความนี้: Mocks ไม่กุด ฉันต้องการที่จะมุ่งเน้นไปที่ความแตกต่างจากมุมมองของแรด Mocks การเยาะเย้ยเป็นวัตถุที่เราสามารถตั้งความคาดหวังไว้และจะตรวจสอบว่าการกระทำที่คาดหวังได้เกิดขึ้นจริง ต้นขั้วเป็นวัตถุที่คุณใช้เพื่อส่งผ่านไปยังรหัสที่อยู่ภายใต้การทดสอบ คุณสามารถตั้งค่าความคาดหวังของมันได้ดังนั้นมันจะทำในบางวิธี แต่ความคาดหวังเหล่านั้นจะไม่ได้รับการยืนยัน คุณสมบัติของ stub จะทำงานโดยอัตโนมัติเหมือนคุณสมบัติปกติและคุณไม่สามารถตั้งค่าความคาดหวังได้ หากคุณต้องการตรวจสอบพฤติกรรมของรหัสภายใต้การทดสอบคุณจะใช้จำลองที่มีความคาดหวังที่เหมาะสมและตรวจสอบว่า หากคุณต้องการเพียงแค่ส่งผ่านค่าที่อาจต้องดำเนินการในบางวิธี แต่ไม่ใช่จุดเน้นของการทดสอบนี้คุณจะใช้สตับ สำคัญ: ต้นขั้วจะไม่ทำให้การทดสอบล้มเหลว

14
คุณจะจำลองระบบไฟล์ใน C # สำหรับการทดสอบหน่วยได้อย่างไร
วิธีการแก้ไขปัญหาการซ้อนทับแบบล้นของ Stack : git - รหัสโฮสต์ของเซิร์ฟเวอร์ไม่ได้ถูกแคช มีห้องสมุดหรือวิธีการจำลองระบบไฟล์ใน C # เพื่อเขียนการทดสอบหน่วยหรือไม่? ในกรณีปัจจุบันของฉันฉันมีวิธีการตรวจสอบว่ามีไฟล์บางไฟล์อยู่และอ่านวันที่สร้าง ฉันอาจต้องการมากกว่านั้นในอนาคต
149 c#  unit-testing  mocking 

21
ตำแหน่งจำลอง Android บนอุปกรณ์?
ฉันจะจำลองตำแหน่งของฉันบนอุปกรณ์จริง (Nexus One) ได้อย่างไร ฉันรู้ว่าคุณสามารถทำได้ด้วยตัวจำลองในแผงควบคุมตัวจำลอง แต่สิ่งนี้ไม่ได้ผลสำหรับอุปกรณ์ทางกายภาพ
147 android  gps  location  mocking 

5
การทดสอบหน่วย ASP.NET WebApi ด้วย Request.CreateResponse
ฉันกำลังพยายามเขียนการทดสอบหน่วยสำหรับ ApiController ของฉันและประสบปัญหาบางอย่าง มีวิธีการขยายที่ดีที่เรียกว่า Request.CreateResponse ที่ช่วยได้มากในการสร้างการตอบสนอง public HttpResponseMessage Post(Product product) { var createdProduct = repo.Add(product); return this.Request.CreateResponse(HttpStatusCode.Created, createdProduct); } มีวิธีใดในการเยาะเย้ย CreateResponse โดยไม่ใช้ mocks บางส่วนหรือใช้โดยตรงของ "HttpResponseMessage ใหม่ (... )"

6
ฟังก์ชั่นเยาะเย้ยในไป
ฉันกำลังเรียนรู้ไปด้วยการเข้ารหัสโปรเจ็คต์ส่วนตัวขนาดเล็ก แม้ว่ามันจะเล็ก แต่ฉันก็ตัดสินใจทำการทดสอบหน่วยอย่างเข้มงวดเพื่อเรียนรู้นิสัยที่ดีใน Go ตั้งแต่เริ่มต้น การทดสอบหน่วยเล็กน้อยได้ทั้งหมดดีและโอชะ แต่ฉันงงกับการอ้างอิงในขณะนี้ ฉันต้องการที่จะสามารถแทนที่การเรียกฟังก์ชั่นบางอย่างด้วยการจำลอง นี่คือตัวอย่างรหัสของฉัน: func get_page(url string) string { get_dl_slot(url) defer free_dl_slot(url) resp, err := http.Get(url) if err != nil { return "" } defer resp.Body.Close() contents, err := ioutil.ReadAll(resp.Body) if err != nil { return "" } return string(contents) } func downloader() { dl_slots …
147 unit-testing  mocking  go 

7
วิธีการจำลองการนำเข้า
โมดูลAรวมimport Bที่ด้านบน อย่างไรก็ตามภายใต้เงื่อนไขการทดสอบผมอยากจะเยาะเย้ย BในA(จำลองA.B) Bและสมบูรณ์ละเว้นจากการนำเข้า ในความเป็นจริงBไม่ได้ติดตั้งในสภาพแวดล้อมการทดสอบตามวัตถุประสงค์ Aเป็นหน่วยที่อยู่ภายใต้การทดสอบ ฉันต้องนำเข้าAพร้อมฟังก์ชั่นทั้งหมดของมัน Bเป็นโมดูลที่ฉันต้องเยาะเย้ย แต่ฉันจะเยาะเย้ยBภายในAและหยุดAจากการนำเข้าจริงBถ้าสิ่งแรกที่Aทำก็คือนำเข้าB? (เหตุผลที่ยังไม่ได้ติดตั้ง B คือฉันใช้ pypy สำหรับการทดสอบอย่างรวดเร็วและน่าเสียดายที่ B ยังไม่สามารถใช้งานร่วมกับ pypy ได้) สิ่งนี้จะเกิดขึ้นได้อย่างไร?

5
Mock กับ MagicMock
ความเข้าใจของฉันคือMagicMockเป็นส่วนเหนือของMockที่ทำ "วิธีการมายากล" โดยอัตโนมัติดังนั้นจึงให้การสนับสนุนรายการการทำซ้ำและอื่น ๆ ได้อย่างราบรื่น ... แล้วอะไรคือเหตุผลที่ทำให้Mockธรรมดามีอยู่? นั่นไม่ใช่แค่MagicMockเวอร์ชันที่ถอดออกมาซึ่งสามารถละเลยได้จริงหรือ? ไม่จำลองชั้นรู้เทคนิคใด ๆ ที่ไม่สามารถใช้ได้ในMagicMock ?
144 python  mocking 

4
ควรเยาะเย้ยเมื่อใด
ฉันมีความเข้าใจพื้นฐานของปลอมจำลองและวัตถุ แต่ผมไม่แน่ใจว่าผมมีความรู้สึกเกี่ยวกับเมื่อ / สถานที่ที่จะใช้เยาะเย้ย - โดยเฉพาะอย่างยิ่งมันจะนำไปใช้กับสถานการณ์นี้ที่นี่

5
อะไรคือความแตกต่างระหว่างการล้อเลียนและการสอดแนมเมื่อใช้ Mockito?
อะไรคือกรณีการใช้งานสำหรับการใช้สายลับ Mockito? สำหรับฉันแล้วดูเหมือนว่าทุกกรณีการใช้งานสายลับสามารถจัดการได้ด้วยการเยาะเย้ยโดยใช้ callRealMethod ความแตกต่างอย่างหนึ่งที่ฉันเห็นคือถ้าคุณต้องการให้การโทรส่วนใหญ่เป็นของจริงมันจะบันทึกโค้ดบางบรรทัดเพื่อใช้จำลองกับสายลับ เป็นอย่างนั้นหรือฉันพลาดภาพใหญ่กว่านี้
142 java  testing  mocking  mockito 

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