S # arp Arch и TDD - PullRequest
       22

S # arp Arch и TDD

0 голосов
/ 12 января 2011

Я пытаюсь освоиться с TDD, поэтому я создал новое приложение S # arp Arch (v1.6) и пробовал создавать тесты для моих классов.К сожалению, я уже столкнулся с проблемой, которую мне еще предстоит решить.

Я создал сравнительный тест для классов 'User' и 'RecordRequest'.При выполнении тестов с NUnit тест «Пользователь» проходит, а «RecordRequest» - нет.Я пытаюсь понять, почему один тест проходит, а другой нет.Сообщение об ошибке:

в SharpArch.Testing.NUnit.SyntaxHelpers.ShouldEqual (фактический объект, ожидаемый объект) в e: \ WorkSpaces \ Git \ SharpArchitecture \ Trunk \ src \ SharpArch \ SharpArch.Testing.NUnit \SyntaxHelpers.cs: строка 25 в Tests.ISPS.Core.Account.RecordRequestTests.CanCompareRecordRequests () в D: \ Web \ Mvc \ Projects \ Campus Counsel \ IRS \ ISPS \ tests \ ISPS.Tests \ ISPS.Core \ Account \ RecordRequestTest.cs: ​​строка 23

Класс 'пользователя' и тест:

using System;
using System.Security.Principal;
using NHibernate.Validator.Constraints;
using SharpArch.Core.DomainModel;

namespace ISPS.Core.Account
{
    public class User : Entity, IPrincipal
    {
        public static User DefaultUser()
        {
            return new User
            {
                Role = Role.Administrator,
                IsActive = true,
                CreatedOn = DateTime.Now
            };
        }

        [DomainSignature]
        [NotNullNotEmpty(Message = "Kerberos must be provided.")]
        public virtual string Kerberos { get; set; }

        [NotNullNotEmpty(Message = "First name must be provided.")]
        public virtual string FirstName { get; set; }

        [NotNullNotEmpty(Message = "Last name must be provided.")]
        public virtual string LastName { get; set; }

        [DomainSignature]
        [NotNullNotEmpty(Message = "Email must be provided.")]
        public virtual string Email { get; set; }

        [NotNull(Message = "Role must be provided.")]
        public virtual Role Role { get; set; }

        public virtual bool IsActive { get; set; }
        public virtual DateTime CreatedOn { get; set; }
        public virtual DateTime? ModifiedOn { get; set; }

        public virtual bool IsAdministrator { get { return Role.Id == Role.AdministratorId; } }
        public virtual bool IsEditor { get { return Role.Id == Role.EditorId; } }
        public virtual bool IsGuest { get { return Role.Id == Role.GuestId; } }

        public virtual IIdentity Identity
        {
            get
            {
                var isAuthenticated = (Role.Name == Role.Administrator.Name);
                return new Identity(isAuthenticated, Kerberos);
            }
        }

        public virtual bool IsInRole(string role)
        {
            return Role.Name == role;
        }
    }

    /// <summary>
    /// Simple implementation of IIdentity
    /// </summary>
    public class Identity : IIdentity
    {
        public Identity(bool isAuthenticated, string name)
        {
            IsAuthenticated = isAuthenticated;
            Name = name;
        }

        public string AuthenticationType
        {
            get { return "Forms"; }
        }

        public bool IsAuthenticated { get; private set; }

        public string Name { get; private set; }
    }
}

using System;
using NUnit.Framework;
using SharpArch.Testing.NUnit;
using ISPS.Core.Account;

namespace Tests.ISPS.Core.Account
{
    [TestFixture]
    public class UserTests
    {
        [Test]
        public void CanCompareUsers()
        {
            var instance = new User
                               {
                                   Kerberos = "nchomsky",
                                   FirstName = "Noam",
                                   LastName = "Chomsky",
                                   Email = "nchomsky@gmail.edu",
                                   Role = Role.Administrator,
                                   IsActive = true,
                                   CreatedOn = DateTime.Parse("1/1/1975 10:00 AM"),
                                   ModifiedOn = null
                               };

            var instanceToCompareTo = new User
                                          {
                                              Kerberos = "nchomsky",
                                              FirstName = "Noam",
                                              LastName = "Chomsky",
                                              Email = "nchomsky@gmail.edu",
                                              Role = Role.Administrator,
                                              IsActive = true,
                                              CreatedOn = DateTime.Parse("1/1/1975 10:00 AM"),
                                              ModifiedOn = null
                                          };

            instance.ShouldEqual(instanceToCompareTo);
        }
    }
}

Класс 'RecordRequest' и тест:

using NHibernate.Validator.Constraints;
using SharpArch.Core.DomainModel;

namespace ISPS.Core.Requests
{
    public class RecordRequest : Entity
    {
        public static RecordRequest DefaultRecordRequest()
        {
            return new RecordRequest();
        }

        [NotNullNotEmpty(Message = "A description of the documents requested must be provided.")]
        public virtual string Description { get; set; }
    }
}

using ISPS.Core.Requests;
using NUnit.Framework;
using SharpArch.Testing.NUnit;

namespace Tests.ISPS.Core.Requests
{
    [TestFixture]
    public class RecordRequestTests
    {
        [Test]
        public void CanCompareRecordRequests()
        {
            var instance = new RecordRequest
            {
                Description = "description"
            };

            var instanceToCompareTo = new RecordRequest
            {
                Description = "description"
            };

            instance.ShouldEqual(instanceToCompareTo);
        }
    }
}

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 12 января 2011

Попробуйте добавить атрибут [DomainSignature] в свойстве Description.

...