私は新しいS#arp Archアプリケーション(v1.6)を作成し、クラスのテストを作成しているので、TDDの速度を上げようとしています。残念ながら私はまだ解決していない問題に取り組んできました。S#arp ArchとTDD
私は 'User'と 'RecordRequest'クラスの両方の比較テストを作成しました。 NUnitでテストを実行すると、 'User'テストは成功しますが、 'RecordRequest'は実行されません。私は1つのテストが合格で、もう1つが合格ではない理由を理解しようとしています。エラーメッセージは、次のとおり
SharpArch.Testing.NUnit.SyntaxHelpers.ShouldEqualに(予想オブジェクト、実際のオブジェクト)Eで:\ワークスペース\のGit \ SharpArchitecture \トランク\ SRC \ SharpArch \ SharpArch.Testing.NUnit \ SyntaxHelpers。 cs:line 25 をTests.ISPS.Core.Account.RecordRequestTests.CanCompareRecordRequests()(D:¥Web¥Mvc¥Projects¥Campus Counsel¥IRS¥ISPS¥tests¥ISPS.Tests¥ISPS.Core¥Account¥RecordRequestTests)にコピーします。 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 = "[email protected]",
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 = "[email protected]",
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);
}
}
}
ご協力いただければ幸いです!
助けてくれてありがとう!より詳細な説明はThe S#arp Architecture WikiのThe S#arp Architecture Class Libraries /DomainModel/Entity.csにあります。 – Tyler