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

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

2
อะไรคือจุดประสงค์ของ Verifiable () ใน Moq?
มีจุดประสงค์เพื่อVerifiable()อะไร? หากฉันตรวจสอบMockและปล่อยให้สิ่งนี้ยังคงยืนยันไฟล์SetUp. แก้ไข:ฉันใช้VerifyAll()เหตุผลในการตรวจสอบทุกอย่าง หลังจากเปลี่ยนเป็นVerify()เฉพาะของฉัน.Verifiable() SetUpถูกตรวจสอบ
125 moq 

8
วิธีการจำลอง ConfigurationManager.AppSettings ด้วย moq
ฉันติดอยู่ที่จุดนี้ของรหัสที่ฉันไม่รู้ว่าจะล้อเลียนอย่างไร: ConfigurationManager.AppSettings["User"]; ฉันต้องเยาะเย้ย ConfigurationManager แต่ฉันไม่ได้มีเงื่อนงำผมใช้ขั้นต่ำ มีใครให้คำแนะนำได้บ้าง ขอบคุณ!
124 c#  unit-testing  moq 

3
ฉันจะโมควิธีการที่มีอาร์กิวเมนต์ที่เป็นทางเลือกในลายเซ็นโดยไม่ระบุอย่างชัดเจนหรือใช้โอเวอร์โหลดได้อย่างไร
รับอินเทอร์เฟซต่อไปนี้: public interface IFoo { bool Foo(string a, bool b = false); } พยายามล้อเลียนโดยใช้ Moq: var mock = new Mock<IFoo>(); mock.Setup(mock => mock.Foo(It.IsAny<string>())).Returns(false); ให้ข้อผิดพลาดต่อไปนี้ในเวลาคอมไพล์: แผนภูมินิพจน์ต้องไม่มีการเรียกหรือการเรียกใช้ที่ใช้อาร์กิวเมนต์ที่เป็นทางเลือก ฉันพบปัญหาข้างต้นที่ยกขึ้นเป็นการปรับปรุงในรายการปัญหาของ Moq และดูเหมือนว่าจะถูกกำหนดให้กับรุ่น 4.5 (ทุกครั้งที่เป็น) คำถามของฉันคือ: ฉันควรทำอย่างไรหากข้างต้นจะไม่ได้รับการแก้ไขในเร็ว ๆ นี้? ตัวเลือกของฉันเป็นเพียงการตั้งค่าเริ่มต้นของพารามิเตอร์ทางเลือกอย่างชัดเจนทุกครั้งที่ฉันเยาะเย้ย (ประเภทใดที่เอาชนะจุดที่ระบุไว้ตั้งแต่แรก) หรือสร้างโอเวอร์โหลดโดยไม่ต้องบูล (เช่นสิ่งที่ฉันทำ ก่อน C # 4)? หรือมีใครเจอวิธีที่ฉลาดกว่านี้ในการเอาชนะปัญหานี้หรือไม่?
119 c#  unit-testing  moq 

3
ฉันจะตรวจสอบได้อย่างไรว่าเมธอดถูกเรียกด้วย Moq เพียงครั้งเดียว
ฉันจะตรวจสอบได้อย่างไรว่าเมธอดถูกเรียกด้วย Moq เพียงครั้งเดียว Verify()เทียบกับVerifable()สิ่งที่เป็นจริงที่ทำให้เกิดความสับสน
112 .net  mocking  moq 

21
Mocking HttpClient ในการทดสอบหน่วย
ฉันมีปัญหาบางอย่างในการพยายามตัดรหัสเพื่อใช้ในการทดสอบหน่วย ประเด็นคือเรื่องนี้ ฉันมีอินเทอร์เฟซ IHttpHandler: public interface IHttpHandler { HttpClient client { get; } } และคลาสที่ใช้ HttpHandler: public class HttpHandler : IHttpHandler { public HttpClient client { get { return new HttpClient(); } } } จากนั้นคลาส Connection ซึ่งใช้ simpleIOC เพื่อฉีดการใช้งานไคลเอ็นต์: public class Connection { private IHttpHandler _httpClient; public Connection(IHttpHandler httpClient) { …
112 c#  unit-testing  moq 

1
Moq: การตั้งค่าไม่ถูกต้องสำหรับสมาชิกที่ไม่สามารถเขียนทับได้: x => x.GetByTitle (“ asdf”)
ไม่แน่ใจว่าฉันจะแก้ไขปัญหานี้ได้อย่างไรโดยพยายามทดสอบหน่วยในเมธอด "GetByTitle" นี่คือคำจำกัดความของฉัน: public class ArticleDAO : GenericNHibernateDAO(IArticle, int>, IArticleDAO { public IArticle GetByTitle(string title) { IQuery query = Session.CreateQuery("...") return query.UniqueResult<IArticle>(); } } public interface IArticleDAO { IArticle GetByTitle(string title); } การทดสอบหน่วย: [Test] public void can_load_by_title() { _mockDaoFactory.Setup(x => x.GetArticleDao()) .Returns(_mockArticleDao.Object); _mockArticleDao.Setup(x => x.GetByTitle("some title")) .Returns(article1.Object); _articleManager.LoadArticle("some title"); Assert.IsNotNull(_articleManager.Article); …
111 c#  nhibernate  nunit  resharper  moq 

5
คุณช่วยฉันเข้าใจ Moq Callback ได้ไหม
ใช้ Moq และดูCallbackแต่ฉันไม่สามารถหาตัวอย่างง่ายๆเพื่อทำความเข้าใจวิธีการใช้งานได้ คุณมีตัวอย่างข้อมูลการทำงานขนาดเล็กที่อธิบายอย่างชัดเจนว่าจะใช้อย่างไรและเมื่อใด
102 .net  moq 

5
ฉันจะจำลอง HttpContext ใน ASP.NET MVC โดยใช้ Moq ได้อย่างไร
[TestMethod] public void Home_Message_Display_Unknown_User_when_coockie_does_not_exist() { var context = new Mock<HttpContextBase>(); var request = new Mock<HttpRequestBase>(); context .Setup(c => c.Request) .Returns(request.Object); HomeController controller = new HomeController(); controller.HttpContext = context; //Here I am getting an error (read only). ... } ตัวควบคุมฐานของฉันมีการแทนที่การเริ่มต้นที่ได้รับเป็น requestContext นี้ ฉันพยายามจะผ่านเรื่องนี้ไป แต่ฉันทำอะไรไม่ถูก protected override void Initialize(System.Web.Routing.RequestContext requestContext) { base.Initialize(requestContext); …

2
การจำลองวัตถุด้วย Moq เมื่อตัวสร้างมีพารามิเตอร์
ฉันมีวัตถุที่พยายามจะล้อเลียนโดยใช้ moq ตัวสร้างของวัตถุมีพารามิเตอร์ที่ต้องการ: public class CustomerSyncEngine { public CustomerSyncEngine(ILoggingProvider loggingProvider, ICrmProvider crmProvider, ICacheProvider cacheProvider) { ... } } ตอนนี้ฉันกำลังพยายามสร้างการจำลองสำหรับวัตถุนี้โดยใช้ไวยากรณ์ v3 "setup" ของ moq หรือ v4 "Mock.Of" แต่ไม่สามารถคิดออกได้ ... ทุกสิ่งที่ฉันพยายามไม่ได้รับการตรวจสอบ นี่คือสิ่งที่ฉันมีจนถึงตอนนี้ แต่บรรทัดสุดท้ายให้ฉันเป็นของจริงไม่ใช่ของจำลอง เหตุผลที่ฉันทำเช่นนี้เนื่องจากฉันมีวิธีการใน CustomerSyncEngine ที่ฉันต้องการตรวจสอบว่ากำลังถูกเรียก ... // setup var mockCrm = Mock.Of<ICrmProvider>(x => x.GetPickLists() == crmPickLists); var mockCache = Mock.Of<ICacheProvider>(x => …
94 moq 

2
Moq, SetupGet, การเยาะเย้ยคุณสมบัติ
ฉันพยายามล้อเลียนคลาสที่เรียกว่าUserInputEntityซึ่งมีคุณสมบัติที่เรียกว่าColumnNames: (มันมีคุณสมบัติอื่น ๆ ฉันเพิ่งทำให้มันง่ายขึ้นสำหรับคำถาม) namespace CsvImporter.Entity { public interface IUserInputEntity { List<String> ColumnNames { get; set; } } public class UserInputEntity : IUserInputEntity { public UserInputEntity(List<String> columnNameInputs) { ColumnNames = columnNameInputs; } public List<String> ColumnNames { get; set; } } } ฉันมีชั้นเรียนผู้นำเสนอ: namespace CsvImporter.UserInterface { public interface IMainPresenterHelper { //... …
94 c#  c#-4.0  properties  moq 

3
วิธีการจำลอง ModelState.IsValid โดยใช้ Moq framework?
ฉันกำลังตรวจสอบ ModelState.IsValidวิธีการดำเนินการของคอนโทรลเลอร์ที่สร้างพนักงานแบบนี้: [HttpPost] public virtual ActionResult Create(EmployeeForm employeeForm) { if (this.ModelState.IsValid) { IEmployee employee = this._uiFactoryInstance.Map(employeeForm); employee.Save(); } // Etc. } ฉันต้องการจำลองในวิธีการทดสอบหน่วยของฉันโดยใช้ Moq Framework ฉันพยายามล้อเลียนแบบนี้: var modelState = new Mock<ModelStateDictionary>(); modelState.Setup(m => m.IsValid).Returns(true); แต่สิ่งนี้ทำให้เกิดข้อยกเว้นในกรณีทดสอบหน่วยของฉัน ใครสามารถช่วยฉันที่นี่?

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 }); …

1
Moq ตรวจสอบด้วยพารามิเตอร์วัตถุ
ฉันกำลังพยายามตรวจสอบพารามิเตอร์ที่เป็นคลาส โค้ดที่กำลังทดสอบนั้นใช้ได้ จุดบกพร่องอยู่ระหว่างการทดสอบ ฉันได้ลองสองวิธีซึ่งทั้งสองวิธีล้มเหลว นี่คือความพยายามของฉัน: 1: this.MockImageResizeFilter.Verify(m => m.Filter(this.UploadedFileData, new ImageFilterOptions() { Width = 256, Height = 256, })); สิ่งนี้จะล้มเหลวเสมอแม้ว่าออบเจ็กต์จะส่งผ่านเนื่องจากพารามิเตอร์ที่สองมีคุณสมบัติเท่ากัน พารามิเตอร์แรกได้รับการตรวจสอบแล้ว 2: this.MockImageResizeFilter.Setup(m => m.Filter(It.IsAny<byte[]>(), It.IsAny<ImageFilterOptions>())) .Callback<byte[], ImageFilterOptions>((data, options) => { Assert.AreEqual(this.UploadedFileData, data, "data"); Assert.AreEqual(filterOptions.Width, options.Width, "Width"); Assert.AreEqual(filterOptions.Height, options.Height, "Height"); } ); สิ่งนี้มักจะผ่านไปแม้ว่ามันจะล้มเหลวก็ตาม Asserts ในการเรียกกลับล้มเหลว แต่ข้อยกเว้นจะไม่ถูกส่งผ่านไปยังบริบทภายนอกดังนั้นการทดสอบจะผ่านไปเสมอ คุณช่วยค้นหาสิ่งที่ฉันทำผิดได้ไหม
86 c#  .net  unit-testing  moq 

15
จะโยน SqlException เมื่อจำเป็นสำหรับการจำลองและการทดสอบหน่วยได้อย่างไร?
SQlExceptionฉันพยายามที่จะทดสอบข้อยกเว้นบางประการในโครงการของฉันและเป็นหนึ่งในข้อยกเว้นที่ผมจับเป็น ดูเหมือนว่าคุณจะไปไม่ได้new SqlException()ดังนั้นฉันจึงไม่แน่ใจว่าฉันจะทิ้งข้อยกเว้นได้อย่างไรโดยเฉพาะอย่างยิ่งโดยไม่ต้องเรียกฐานข้อมูล (และเนื่องจากเป็นการทดสอบหน่วยจึงมักไม่แนะนำให้เรียกฐานข้อมูลเนื่องจากมันช้า) ฉันใช้ NUnit และ Moq แต่ฉันไม่แน่ใจว่าจะปลอมได้อย่างไร การตอบกลับคำตอบบางส่วนที่ดูเหมือนว่าทั้งหมดจะขึ้นอยู่กับ ADO.NET โปรดทราบว่าฉันใช้ Linq กับ Sql ดังนั้นสิ่งนั้นจึงเป็นเหมือนเบื้องหลัง ข้อมูลเพิ่มเติมตามที่ @MattHamilton ร้องขอ: System.ArgumentException : Type to mock must be an interface or an abstract or non-sealed class. at Moq.Mock`1.CheckParameters() at Moq.Mock`1..ctor(MockBehavior behavior, Object[] args) at Moq.Mock`1..ctor(MockBehavior behavior) at Moq.Mock`1..ctor() โพสต์ในบรรทัดแรกเมื่อพยายามจำลอง var ex = …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.