DomainContext
私の単体テストの呼び出しを模擬しようとしています。Silverlight単体テストのInvokeOperationを作成するにはどうすればよいですか?
私の実際のコードは次のとおりです。
public InvokeOperation<bool> CodeIsUnique(string code, Action<InvokeOperation<bool>> action, object userState)
{
return ObjectContext.CodeIsUnique(code, action, userState);
}
ObjectContext
が自動生成されたクラスのインスタンスである:これはです、このコードを介してクライアント側で呼び出され
public class SomeDomainService : LinqToSqlDomainService<SomeDataContext>
{
[Invoke]
public bool CodeIsUnique(string code)
{
return !this.DataContext.Objects.Any(o => string.Compare(o.Code, code, true) == 0);
}
}
は、インターフェイスを実装しますSystem.ServiceModel.DomainServices.Client.DomainContext
に由来します。これは、ビューモデルから呼び出された場合action
コードが実行されます。
public InvokeOperation<bool> CodeIsUnique(string code, Action<InvokeOperation<bool>> action, object userState)
{
bool isUnique = !_list.Any(o => string.Compare(o.Code, code) == 0);
InvokeOperation<bool> op = ?????; // Here's the problem
action.Invoke(op);
return op;
}
これは地元を離れて働く:
this.ObjectInterface.CodeIsUnique(currentObject.Code, op =>
{
if (!op.Value)
{
// Code is not unique set error state.
}
}
は、だから私は、サーバーに行かないモック実装を作成しましたList<Object>
とaction.Invoke
作品を呼び出すが、ちょうどnull
ビューモデルコードはop
として失敗した呼び出し中で(明らかに)null
です。
私がする必要があるのは、タイプInvokeOperation<bool>
のオブジェクトを作成し、.Value
プロパティをisUnique
に設定することです。しかし、私はこれにどのように働くことができません。最初のインスタンスでは.Value
プロパティは読み取り専用で、2番目のインスタンスではInvokeOperation<T>
の公開クリエーターはありません。
テスト用のWebプロジェクトでテスト用のDomainServiceを作成したいと思っています。