私はMoqとTDDで新しく、私がしようとしているのはリポジトリインタフェースのメソッドを設定することです。MoqフレームワークFunc <T,T>
完全な話です。
私は、問題は、私はドメインサービスを使用し、ここでインターフェースが
public interface IRepository<T>
{
...
T FindBy(Func<T,bool> func);
...
}
のようなものです。このエンティティのリポジトリを持つプロパティBusinessIdentificationNumber
public class Tenant:EntityBase<Tenant>,IAggregateRoot
{
...
public string BusinessIdentificationNumber {get;set;}
...
}
次とテナントと呼ばれるドメインエンティティクラスを持っていますテナントを作るためのルールを保持しています。
public class TenantCreationService:ITenantCreationService
{
public TenantCreationService(IRepository<Tenant> tenantRepository){...}
public void CreateTenant(Tenant tenant)
{
//from here there is call to IRepository<Tenant>.FindBy(funcMethod);
}
}
そして、ユニットテストで私は、コンストラクタに渡されたリポジトリをあざけり、私は機能をテストしたいと思いますTenantCreationServiceをテストしてい:
- BusinessIdentificationNumberとテナントが既にストレージやセッションに存在する場合、それが返されるべきです。
だから私は
repositoryMock.Setup(x=>x.FindBy(It.Is<Tenant>(t=>t.BusinessIdentificationNumber
== _tenantInTest.BusinessIdentificationNumber))).Returns(_tenantInTest)
ようにそれをやろうとしたが、それはコンパイルされません。あなたは私が何をしたいのか知っていますか?
編集:私は
repositoryMock.Setup(e => e.FindBy(t => t.BusinessNumber == _validTenant.BusinessNumber)).Returns(
_validTenant);
以下のスニペットをコンパイルしようとすると、 i "はBusinessIdentificationNumberとテナントが既にストレージやセッションに存在する場合、それが返されるべきである。" 例外
Unsupported expression: t => (t.BusinessNumber == value(DP.IPagac.UnitTests.DP.IPagac.Module.TenantManagement.TenantDomainServiceTests)._validTenant.BusinessNumber)
は、あなたの質問でコンパイルエラーを含めることができます。 –