在Umbraco 7.5.10中设置模拟IMember对象以进行单元测试

时间:2018-06-01 09:52:39

标签: c# unit-testing nunit umbraco umbraco7

所以我试图对Umbraco 7.5.10控制器进行单元测试。上下文已被嘲笑并通过而没有任何问题。然后我继续创建一个模拟IMember对象,但每当我尝试设置任何属性(LastLoginDate,Name,Email等)时,它们都没有被设置,当你在调试期间去检查inactiveMemberEmailed.Object时属性为null。我已经检查了IMember继承的是什么,没有理由不设置它们。

using NUnit.Framework;
using Umbraco.Core.Models;
using Site.Logic.Controllers.SurfaceControllers;
using System;
using Moq;
using Umbraco.UnitTesting.Adapter.Support;
using System.Collections.Generic;

namespace Site.Tests
{
    [TestFixture]
    public class InactiveMemberCheckTest
    {
        private UmbracoSupport support = new UmbracoSupport();
        private Mock<IMember> inactiveMemberEmailed;

        [SetUp]
        public void Setup()
        {
            support.SetupUmbraco();

            this.inactiveMemberEmailed = new Mock<IMember>();


            inactiveMemberEmailed.Object.LastLoginDate = DateTime.Today.AddMonths(-12);
            inactiveMemberEmailed.Object.Name = "inactiveMemberNotEmailed";
            inactiveMemberEmailed.Object.Email = "email@example.co.uk";
            inactiveMemberEmailed.Object.SetValue("contactId", 1);
            inactiveMemberEmailed.Object.SetValue("inactiveCheckEmailed", true);
        }

        [Test]
        public void MembersCanBeChecked()
        {
            var controller = new InactiveMemberCheckController(support.UmbracoContext);

            var resultInactiveEmailed = controller.InactiveCheck(inactiveMemberEmailed.Object);

            Assert.AreEqual(resultInactiveEmailed, true);
        }
    }
}   

1 个答案:

答案 0 :(得分:0)

我已经解决了自己的问题;在设置属性之前我没有设置属性(我假设它们在对象初始化时已经自动设置)所以解决这个问题的代码行是:

inactiveMemberEmailed.SetupAllProperties();