私は次のコードを持っています:
public class FakeOrderRepository:IOrderRepository
{
private static Fixture fixture = new Fixture();
private List<acc_ORDERS> dbmock = new List<acc_ORDERS>()
{
fixture.Build<acc_ORDERS>().With(x => x.OrderNumber,Tests.FAKE_ORDERNUMBER)
.Without(x => x.EntityKey)
.Without(x => x.usr_CUSTOMERSReference)
.Without(x => x.usr_CUSTOMERS)
.Without(x => x.sys_COUNTRY1Reference)
.Without(x => x.sys_COUNTRYReference)
.Without(x => x.sys_STATE1Reference)
.Without(x => x.sys_STATEReference)
.Without(x => x.acc_CUSTOMJEWEL_ORDER_ITEMS)
.Without(x => x.acc_DIAMOND_ORDER_ITEMS)
.Without(x => x.acc_JEWELRY_ORDER_ITEMS)
.Without(x => x.acc_CASHFLOW)
.Without(x => x.sys_STATE)
.Without(x => x.sys_STATE1)
.Without(x => x.sys_COUNTRY)
.Without(x => x.sys_COUNTRY1)
.CreateAnonymous()
};
public int Save(Order orderdto)
{
throw new NotImplementedException();
}
public Order GetOrderByOrderNumber(int orderNumber)
{
try
{
var orderdto = dbmock.Where(x => x.OrderNumber == orderNumber).SingleOrDefault();
orderdto.sys_COUNTRYReference= new EntityReference<sys_COUNTRY>()
{
Value = new sys_COUNTRY()
};
var order = Mapper.Map<acc_ORDERS, Order>(orderdto);
return order;
}
catch (Exception ex)
{
throw new Exception("when asked to get the order with the ordernumber:" + orderNumber + " an error occured\r\n" + ex.Message);
}
}
}
この行のようです:
orderdto.sys_COUNTRYReference= new EntityReference<sys_COUNTRY>()
{
Value = new sys_COUNTRY()
};
実行すると例外が発生し、参照オブジェクトをモックしようとしています。これを使用せずにコードを呼び出すと、すべて機能しますが、テストコードにはsys_COUNTRYReferenceオブジェクトが必要です。
例外:
このRelatedEndの所有者がnullの場合、要求された操作は許可されません。デフォルトのコンストラクターで作成されたRelatedEndオブジェクトは、シリアル化中のコンテナーとしてのみ使用する必要があります。
この問題を解決する方法、または別の角度から攻撃する方法についてアドバイスしてください。
ありがとうございました。