【问题标题】:Moq.MockVerificationException : The following setups were not matched:Moq.MockVerificationException :以下设置不匹配:
【发布时间】:2012-04-26 10:01:58
【问题描述】:

我收到了这个错误

测试 'EM.CoreTest.Services.UnitTestEventService.EventService_Return_10_Events' 失败:Moq.MockVerificationException:以下设置没有 匹配:IPricePackRepository pricepack => pricepack.Delete(It.Is(a => a.PP_EventID == 1)) 在 Moq.Mock.Verify() Services\UnitTestEventService.cs(52,0):在 EM.CoreTest.Services.UnitTestEventServices.EventService_Return_10_Events()

我想知道为什么在这方面会引发错误,因为它们与 eventPersistenceMock 具有相同的逻辑。请帮帮我。

 namespace EM.CoreTest.Services
    {
        [TestFixture]
        public class UnitTestEventSevice
        {
            [SetUp]
            public void StartUp()
            {
                AutoMapperConfiguration.Configure();
            }
            [Test]
            public void EventService_Return_10_Events()
            {
                var eventPersistenceMock = new Mock<IEventRepository>();
                var pricepackPersistenceMock = new Mock<IPricePackRepository>();
                var regformPersistenceMock = new Mock<IRegFormRepository>();
                var attendeePersistenceMock = new Mock<IAttendeeRepository>();
                var eventlists = GetEvents();
                var pricepacks = GetPricepacks();
                var currentevent = eventlists.ToList()[1];
                eventPersistenceMock.Setup(r => r.GetAll()).Returns(eventlists);
                eventPersistenceMock.Setup(u => u.Single(It.IsAny<Func<tbl_SBAem_Event, bool>>())).Returns(eventlists.Where(a => a.EventMngID == currentevent.EventMngID).Single());
                eventPersistenceMock.Setup(r => r.Delete(currentevent)).Verifiable();
                eventPersistenceMock.Setup(r => r.SaveChanges()).Verifiable();

                 pricepackPersistenceMock.Setup(pricepack => pricepack.GetAll()).Returns(pricepacks);
                 pricepackPersistenceMock.Setup(pricepack => pricepack.Delete(It.Is<tbl_SBAem_PricePackages>(a => a.PP_EventID == currentevent.EventMngID))).Verifiable();
                 pricepackPersistenceMock.Setup(pricepack => pricepack.SaveChanges()).Verifiable();

                 regformPersistenceMock.Setup(rgform => rgform.Delete(It.Is<tbl_SBAem_RegForm>(a => a.RF_EventID == currentevent.EventMngID))).Verifiable();
                 regformPersistenceMock.Setup(rgform => rgform.SaveChanges()).Verifiable();

                 attendeePersistenceMock.Setup(atnd => atnd.Delete(It.Is<tbl_SBAem_Attendee>(a => a.AT_RegID == currentevent.EventMngID))).Verifiable();
                 attendeePersistenceMock.Setup(atnd => atnd.SaveChanges()).Verifiable();

                var eventservice = new EventService(eventPersistenceMock.Object,pricepackPersistenceMock.Object,regformPersistenceMock.Object,attendeePersistenceMock.Object);

                Assert.AreEqual(eventservice.EventLists().Count, 10);
                Assert.AreEqual(eventservice.CustomizedQuestions(1).EventMngID, 1);
                Assert.IsTrue(eventservice.DeletePage(currentevent.EventMngID));

                eventPersistenceMock.Verify();
                pricepackPersistenceMock.Verify();    
                regformPersistenceMock.Verify();
                attendeePersistenceMock.Verify();
            }

            private IEnumerable<tbl_SBAem_PricePackages>  GetPricepacks()
            {
                var listtblsbaemPricePackages = new List<tbl_SBAem_PricePackages>();
                for (var i = 0; i < 10; i++)
                {
                    var tblsbaemPricePackages = new tbl_SBAem_PricePackages
                    {
                        PP_AID = 1
                    ,
                        PP_AccessLevel = "Access Level"
                    ,
                        PP_AttendeeCount = 50
                    ,
                        PP_Cost = (decimal?)34.45
                    ,
                        PP_Desc = "Pricepacks Description"
                    ,
                        PP_EnforceCount = 1
                    ,
                        PP_EventID = i
                    ,
                        PP_GID = 1
                    ,
                        PP_Name = "Name"
                    ,
                        PP_Tax = (decimal?)23.12
                    ,
                        PricePackageID = i
                    };
                    listtblsbaemPricePackages.Add(tblsbaemPricePackages);
                }
                return listtblsbaemPricePackages;
            }

            private IEnumerable<tbl_SBAem_Event> GetEvents()
            {
                var listtblsbaemConfig = new List<tbl_SBAem_Event>();
                for (var i = 0; i < 10; i++)
                {
                    var tblSbAemEvent = new tbl_SBAem_Event
                    {
                        EventMngID = i
                        ,
                        EM_AID = null
                        ,
                        EM_Agree1Name = "Rene agree"
                        ,
                        EM_Agree1Value = "Yes"
                        ,
                        EM_Agree2Name = "Tessa Agree"
                        ,
                        EM_Agree2Value = "Yes"
                        ,
                        EM_AllowSignup = null
                        ,
                        EM_BccNotify = "rene_florendo@yahoo.com.ph"
                        ,
                        EM_ChargeTiming = "10:00 am"
                        ,
                        EM_ContactEmail = "rene.florendo@codelean.com"
                        ,
                        EM_ContactName = "Rene Florendo"
                        ,
                        EM_ContactPhone = "1234567"
                        ,
                        EM_CurAttendee = null
                        ,
                        EM_Date = DateTime.Now
                        ,
                        EM_Description = "It's me rene"
                        ,
                        EM_EditStatus = null
                        ,
                        EM_EmailIntro = "Hey dear I am rene"
                        ,
                        EM_EmailMessage = "I love you"
                        ,
                        EM_GID = null
                        ,
                        EM_GuestPass = "guessPass"
                        ,
                        EM_GuestUser = "rene"
                        ,
                        EM_Image = "image1.png"
                        ,
                        EM_Instructions = "just me"
                        ,
                        EM_Link = "htpp://yahoo.com"
                        ,
                        EM_Location = "makati city"
                        ,
                        EM_MapLink = "http://google.com/image.png"
                        ,
                        EM_MaxAttendee = null
                        ,
                        EM_RegEnd = new DateTime(2012, 4, 16)
                        ,
                        EM_RegStart = new DateTime(2012, 4, 16)
                        ,
                        EM_ReqAddress = null
                        ,
                        EM_ReqEmail = 1
                        ,
                        EM_ReqOrg = 1
                        ,
                        EM_ReqPhone = 1
                        ,
                        EM_ReqPhone2 = 1
                        ,
                        EM_ReqTitle = 1
                        ,
                        EM_ShowShip = 1
                        ,
                        EM_SkipAttendee = 1
                        ,
                        EM_Time = "10:00 am"
                        ,
                        EM_Type = "Type A"
                        ,
                        EM_isTemplate = 1
                        ,
                        EM_name = "Name me"
                        ,
                        EM_opt1Name = "optName1"
                        ,
                        EM_opt1Values = "optValues1"
                        ,
                        EM_opt2Name = "optName2"
                        ,
                        EM_opt2Values = "optValues2"
                        ,
                        EM_opt3Name = "optName3"
                        ,
                        EM_opt3Values = "optValues3"
                        ,
                        EM_opt4Name = "optName4"
                        ,
                        EM_opt4Values = "optValues4"
                        ,
                        EM_opt5Name = "optName5"
                        ,
                        EM_opt5Values = "optValues5"
                        ,
                        EM_opt6Name = "optName6"
                        ,
                        EM_opt6Values = "optValues6"
                        ,
                        EM_reqAgree1 = null
                        ,
                        EM_reqAgree2 = null
                        ,
                        EM_reqOpt1 = 1
                        ,
                        EM_reqOpt2 = 1
                        ,
                        EM_reqOpt3 = 1
                        ,
                        EM_reqOpt4 = 1
                        ,
                        EM_reqOpt5 = 1
                        ,
                        EM_reqOpt6 = 1

                    };
                    listtblsbaemConfig.Add(tblSbAemEvent);
                }
                return listtblsbaemConfig;
            }
        }
    }

【问题讨论】:

    标签: moq


    【解决方案1】:

    抱歉,已经有一段时间了,您可能已经解决了数千次问题。 但是我今天也遇到了这个问题,并且我对错误有所了解。

    “以下设置不匹配”表示您有一个模拟设置,但从未调用过。

    这意味着你认为

    pricepack.Delete(a)

    应该被调用。但实际上它从未被调用过。

    如果您知道为什么不调用它并且您认为这是正确的行为,请删除设置。否则,您可能需要调查为什么不调用它。

    【讨论】:

      【解决方案2】:

      将声明 pricepackPersistenceMock.Setup(pricepack =&gt; pricepack.Delete(It.Is&lt;tbl_SBAem_PricePackages&gt;(a =&gt; a.PP_EventID == currentevent.EventMngID))).Verifiable(); 更改为 pricepackPersistenceMock.Setup(pricepack =&gt; pricepack.Delete(It.IsAny&lt;Func&lt;tbl_SBAem_PricePackages, bool&gt;&gt;())).Verifiable();

       public void EventService_Return_10_Events()
              {
                  var eventPersistenceMock = new Mock<IEventRepository>();
                  var pricepackPersistenceMock = new Mock<IPricePackRepository>();
                  var regformPersistenceMock = new Mock<IRegFormRepository>();
                  var attendeePersistenceMock = new Mock<IAttendeeRepository>();
                  var eventlists = GetEvents();
                  var pricepacks = GetPricepacks();
                  var currentevent = eventlists.ToList()[1];
                  eventPersistenceMock.Setup(r => r.GetAll()).Returns(eventlists);
                  eventPersistenceMock.Setup(u => u.Single(It.IsAny<Func<tbl_SBAem_Event, bool>>())).Returns(eventlists.Where(a => a.EventMngID == currentevent.EventMngID).Single());
                  eventPersistenceMock.Setup(r => r.Delete(currentevent)).Verifiable();
                  eventPersistenceMock.Setup(r => r.SaveChanges()).Verifiable();
      
                   pricepackPersistenceMock.Setup(pricepack => pricepack.GetAll()).Returns(pricepacks);
                   pricepackPersistenceMock.Setup(pricepack => pricepack.Delete(It.IsAny<Func<tbl_SBAem_PricePackages, bool>>())).Verifiable();
                   pricepackPersistenceMock.Setup(pricepack => pricepack.SaveChanges()).Verifiable();
      
                   regformPersistenceMock.Setup(rgform => rgform.Delete(It.IsAny<Func<tbl_SBAem_RegForm,bool>>())).Verifiable();
                   regformPersistenceMock.Setup(rgform => rgform.SaveChanges()).Verifiable();
      
                   attendeePersistenceMock.Setup(atnd => atnd.Delete(It.IsAny<Func<tbl_SBAem_Attendee,bool>>())).Verifiable();
                   attendeePersistenceMock.Setup(atnd => atnd.SaveChanges()).Verifiable();
      
                  var eventservice = new EventService(eventPersistenceMock.Object,pricepackPersistenceMock.Object,regformPersistenceMock.Object,attendeePersistenceMock.Object);
      
                  Assert.AreEqual(eventservice.EventLists().Count, 10);
                  Assert.AreEqual(eventservice.CustomizedQuestions(1).EventMngID, 1);
                  Assert.IsTrue(eventservice.DeletePage(currentevent.EventMngID));
      
                  eventPersistenceMock.Verify();
                  pricepackPersistenceMock.Verify();    
                  regformPersistenceMock.Verify();
                  attendeePersistenceMock.Verify();
              }
      

      【讨论】:

        猜你喜欢
        • 2014-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-13
        • 2019-09-11
        • 2021-12-14
        • 2018-02-03
        • 1970-01-01
        相关资源
        最近更新 更多