Moq.MockVerificationException:以下设置未匹配:

时间:2012-04-26 10:01:58

标签: moq

我收到了这个错误

  

测试   'EM.CoreTest.Services.UnitTestEventSevice.EventService_Return_10_Events'   失败:Moq.MockVerificationException:以下设置不是   匹配:IPricePackRepository pricepack =>   pricepack.Delete(It.Is(a => a.PP_EventID ==   1))在Moq.Mock.Verify()Services \ UnitTestEventSevice.cs(52,0):at   EM.CoreTest.Services.UnitTestEventSevice.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;
            }
        }
    }

2 个答案:

答案 0 :(得分:2)

对不起它已经有一段时间了,你可能已经解决了数千次这个问题。 但我今天也遇到了这个问题,而且我对这个错误有所了解。

&#34;以下设置未匹配&#34;意味着你有一个模拟设置,但从未调用。

这意味着你想

  

pricepack.Delete(a)中

应该叫

。但实际上它从未被称为。

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

答案 1 :(得分:1)

将语句pricepackPersistenceMock.Setup(pricepack => pricepack.Delete(It.Is<tbl_SBAem_PricePackages>(a => a.PP_EventID == currentevent.EventMngID))).Verifiable();更改为  pricepackPersistenceMock.Setup(pricepack => pricepack.Delete(It.IsAny<Func<tbl_SBAem_PricePackages, bool>>())).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();
        }
相关问题