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

Moq เป็นเฟรมเวิร์กการเยาะเย้ยที่พิมพ์อย่างชัดเจนและเรียบง่ายสำหรับ. NET

5
วิธีการตรวจสอบว่าวิธีนั้นไม่ได้ถูกเรียกใน Moq?
ฉันจะตรวจสอบวิธีการที่ไม่ได้เรียกว่าในMoq ได้อย่างไร? มันมีบางอย่างเช่น AssertWasNotCalled หรือไม่? อัปเดต: เริ่มจากเวอร์ชัน 3.0 คุณสามารถใช้ไวยากรณ์ใหม่ได้: mock.Verify(foo => foo.Execute("ping"), Times.Never());
466 c#  .net  moq 

3
ส่งคืนค่าที่ส่งผ่านไปยังเมธอด
ฉันมีวิธีการบนอินเตอร์เฟส: string DoSomething(string whatever); ฉันต้องการเยาะเย้ยนี้ด้วยขั้นต่ำเพื่อให้มันส่งคืนสิ่งที่ผ่านไป - สิ่งที่ต้องการ: _mock.Setup( theObject => theObject.DoSomething( It.IsAny<string>( ) ) ) .Returns( [the parameter that was passed] ) ; ความคิดใด ๆ
390 c#  mocking  moq 

4
ฉันจะบอก Moq ให้ส่งคืนภารกิจได้อย่างไร
ฉันมีอินเตอร์เฟซที่ประกาศ Task DoSomethingAsync(); ฉันใช้ MoqFramework สำหรับการทดสอบ: [TestMethod()] public async Task MyAsyncTest() { Mock<ISomeInterface> mock = new Mock<ISomeInterface>(); mock.Setup(arg => arg.DoSomethingAsync()).Callback(() => { <my code here> }); ... } await DoSomethingAsync()จากนั้นในการทดสอบของฉันฉันรันโค้ดที่จะเรียก และการทดสอบล้มเหลวในบรรทัดนั้น ผมทำอะไรผิดหรือเปล่า?

11
การกำหนดพารามิเตอร์ out / ref ใน Moq
เป็นไปได้ไหมที่จะกำหนดพารามิเตอร์out/ refโดยใช้ Moq (3.0+)? ฉันดูที่การใช้งานCallback()แล้ว แต่Action<>ไม่รองรับพารามิเตอร์การอ้างอิงเพราะเป็นข้อมูลทั่วไป ฉันควรเลือกวางข้อ จำกัด ( It.Is) ลงในอินพุตของrefพารามิเตอร์แม้ว่าฉันสามารถทำได้ในการโทรกลับ ฉันรู้ว่า Rhino Mocks รองรับฟังก์ชั่นนี้ แต่โครงการที่ฉันกำลังใช้งานอยู่ใช้ Moq อยู่แล้ว
293 c#  parameters  moq  ref  out 

7
การคืนค่าที่แตกต่างกันเป็นครั้งแรกและครั้งที่สองด้วย Moq
ฉันมีแบบทดสอบนี้: [TestCase("~/page/myaction")] public void Page_With_Custom_Action(string path) { // Arrange var pathData = new Mock<IPathData>(); var pageModel = new Mock<IPageModel>(); var repository = new Mock<IPageRepository>(); var mapper = new Mock<IControllerMapper>(); var container = new Mock<IContainer>(); container.Setup(x => x.GetInstance<IPageRepository>()).Returns(repository.Object); repository.Setup(x => x.GetPageByUrl<IPageModel>(path)).Returns(() => pageModel.Object); pathData.Setup(x => x.Action).Returns("myaction"); pathData.Setup(x => x.Controller).Returns("page"); var resolver …
262 c#  unit-testing  nunit  moq 

3
ใช้ Moq เพื่อจำลองวิธีอะซิงโครนัสสำหรับการทดสอบหน่วย
ฉันกำลังทดสอบวิธีการสำหรับบริการที่APIโทรผ่านเว็บ ใช้HttpClientงานปกติได้ดีสำหรับการทดสอบหน่วยถ้าฉันยังเรียกใช้บริการเว็บ (อยู่ในโครงการอื่นในการแก้ปัญหา) ในพื้นที่ อย่างไรก็ตามเมื่อฉันเช็คอินการเปลี่ยนแปลงของฉันเซิร์ฟเวอร์บิลด์จะไม่สามารถเข้าถึงบริการเว็บดังนั้นการทดสอบจะล้มเหลว ฉันได้คิดค้นวิธีนี้สำหรับการทดสอบหน่วยของฉันโดยการสร้างIHttpClientอินเทอร์เฟซและใช้เวอร์ชันที่ฉันใช้ในแอปพลิเคชันของฉัน สำหรับการทดสอบหน่วยฉันสร้างเวอร์ชันที่เยาะเย้ยโดยใช้วิธีการโพสต์แบบอะซิงโครนัสที่เยาะเย้ย ที่นี่ฉันมีปัญหา ฉันต้องการส่งคืนตกลงHttpStatusResultสำหรับการทดสอบนี้โดยเฉพาะ สำหรับการทดสอบอื่นที่คล้ายคลึงกันฉันจะคืนผลลัพธ์ที่ไม่ดี การทดสอบจะทำงาน แต่จะไม่เสร็จสมบูรณ์ มันค้างที่รอ ฉันยังใหม่กับการเขียนโปรแกรมแบบอะซิงโครนัสผู้ได้รับมอบหมายและขั้นต่ำและฉันค้นหา SO และ google มาระยะหนึ่งเพื่อเรียนรู้สิ่งใหม่ แต่ฉันก็ยังดูเหมือนจะไม่สามารถผ่านพ้นปัญหานี้ได้ นี่คือวิธีที่ฉันพยายามทดสอบ: public async Task<bool> QueueNotificationAsync(IHttpClient client, Email email) { // do stuff try { // The test hangs here, never returning HttpResponseMessage response = await client.PostAsync(uri, content); // more logic here …

6
เหตุใดฉันจึงได้รับข้อยกเว้นพร้อมข้อความ“ ตั้งค่าไม่ถูกต้องบนสมาชิกที่ไม่ใช่เสมือน (overridable ใน VB) …”
ฉันมีการทดสอบหน่วยที่ฉันต้องจำลองวิธีการที่ไม่เสมือนจริงที่ส่งกลับประเภทบูล public class XmlCupboardAccess { public bool IsDataEntityInXmlCupboard(string dataId, out string nameInCupboard, out string refTypeInCupboard, string nameTemplate = null) { return IsDataEntityInXmlCupboard(_theDb, dataId, out nameInCupboard, out refTypeInCupboard, nameTemplate); } } ดังนั้นฉันมีวัตถุจำลองของXmlCupboardAccessคลาสและฉันพยายามตั้งค่าจำลองสำหรับวิธีการนี้ในกรณีทดสอบของฉันที่แสดงด้านล่าง [TestMethod] Public void Test() { private string temp1; private string temp2; private Mock<XmlCupboardAccess> _xmlCupboardAccess = new Mock<XmlCupboardAccess>(); _xmlCupboardAccess.Setup(x => …
176 c#  unit-testing  moq 

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() { …

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 …

8
ขั้นต่ำ: วิธีการที่จะได้รับพารามิเตอร์ที่ส่งผ่านไปยังวิธีการของการบริการเยาะเย้ย
ลองนึกภาพชั้นเรียนนี้ public class Foo { private Handler _h; public Foo(Handler h) { _h = h; } public void Bar(int i) { _h.AsyncHandle(CalcOn(i)); } private SomeResponse CalcOn(int i) { ...; } } โม (c) จัดการ cking Handler ในการทดสอบของ Foo ฉันจะสามารถตรวจสอบสิ่งที่Bar()ผ่านไปได้_h.AsyncHandleอย่างไร
170 c#  moq 

5
การตรวจสอบพารามิเตอร์เฉพาะด้วย Moq
public void SubmitMessagesToQueue_OneMessage_SubmitSuccessfully() { var messageServiceClientMock = new Mock<IMessageServiceClient>(); var queueableMessage = CreateSingleQueueableMessage(); var message = queueableMessage[0]; var xml = QueueableMessageAsXml(queueableMessage); messageServiceClientMock.Setup(proxy => proxy.SubmitMessage(xml)).Verifiable(); //messageServiceClientMock.Setup(proxy => proxy.SubmitMessage(It.IsAny<XmlElement>())).Verifiable(); var serviceProxyFactoryStub = new Mock<IMessageServiceClientFactory>(); serviceProxyFactoryStub.Setup(proxyFactory => proxyFactory.CreateProxy()).Returns(essageServiceClientMock.Object); var loggerStub = new Mock<ILogger>(); var client = new MessageClient(serviceProxyFactoryStub.Object, loggerStub.Object); client.SubmitMessagesToQueue(new List<IMessageRequestDTO> {message}); //messageServiceClientMock.Verify(proxy …
170 c#  unit-testing  nunit  moq 

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

1
ตรวจสอบการเรียกใช้เมธอดโดยใช้ Moq
ฉันค่อนข้างใหม่ในการทดสอบหน่วยใน C # และเรียนรู้การใช้ Moq ด้านล่างเป็นชั้นเรียนที่ฉันพยายามทดสอบ class MyClass { SomeClass someClass; public MyClass(SomeClass someClass) { this.someClass = someClass; } public void MyMethod(string method) { method = "test" someClass.DoSomething(method); } } class Someclass { public DoSomething(string method) { // do something... } } ด้านล่างนี้เป็น TestClass ของฉัน: class MyClassTest { [TestMethod()] public …
142 c#  testing  methods  moq 

3
วิธีการจำลอง Moq โดยไม่ระบุพารามิเตอร์อินพุต
ฉันมีรหัสบางอย่างในการทดสอบโดยใช้ Moq: public class Invoice { ... public bool IsInFinancialYear(FinancialYearLookup financialYearLookup) { return InvoiceDate >= financialYearLookup.StartDate && InvoiceDate <= financialYearLookup.EndDate; } ... } ในการทดสอบหน่วยฉันพยายามล้อเลียนวิธีนี้และทำให้มันกลับมาเป็นจริง mockInvoice.Setup(x => x.IsInFinancialYear()).Returns(true); IsInFinancialYearอย่างไรก็ตามมีการเขียนบรรทัดนี้ดังนั้นผมจึงไม่ได้มีการระบุการป้อนข้อมูลเพื่อ กล่าวคือ. ดังนั้นมันจึงไม่อยู่ในโค้ดว่าพารามิเตอร์อินพุตคืออะไรมันจะคืนค่าจริงตามที่ส่งผ่านไป?
138 c#  mocking  moq 

13
วิธีการทดสอบหน่วยด้วย ILogger ใน ASP.NET Core
นี่คือตัวควบคุมของฉัน: public class BlogController : Controller { private IDAO<Blog> _blogDAO; private readonly ILogger<BlogController> _logger; public BlogController(ILogger<BlogController> logger, IDAO<Blog> blogDAO) { this._blogDAO = blogDAO; this._logger = logger; } public IActionResult Index() { var blogs = this._blogDAO.GetMany(); this._logger.LogInformation("Index page say hello", new object[0]); return View(blogs); } } อย่างที่คุณเห็นฉันมีการอ้างอิง 2 รายการคือ a IDAOและILogger …

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