2009-04-22 5 views
1

私はメソッドをテストしようとしています。 私はこのようなコードを見て (サービスを呼び出す)メソッド呼び出しがその方法であることをensrurしたい:私は(TypeMockを使用して)、偽のオブジェクト でプロキシを交換したがためのエラーを取得テストのために捨ててください

using(proxy = new Proxy()) 
{ 
     proxy.CallService(); 
} 

ブロックの終わりに配置された擬似オブジェクト。 私はその "using"ブロックを削除したくありません。 ありがとう

答えて

0

は免責事項:アレンジ法アサートAPIを使用している場合、私はあなたが偽のオブジェクトを作成するときに(Members.ReturnRecursiveFakes を使用することができますTypemock
で仕事を注:これはバージョン5.2.0のデフォルトです) これはDisposeメソッドも自動的に偽装します。

var fake = Isolate.Fake.Instance<Proxy>(Members.ReturnRecursiveFakes); 
Isolate.WhenCalled(() => fake.CallService()).IgnoreCall(); 
Isolate.Swap.NextInstance<Proxy>().With(fake); 

UnderTest classUnderTest = new ClassUnderTest(); 
classUnderTest.MethodUnderTest(); // assuming the Proxy instance is used here. 

Isolate.Verify.WasCalledWithAnyArguments(()=>fake.CallService()); 

私はジョンスキートは私はDisposeメソッドが呼び出されることを保証します別のテストを作成するだろうと言ったことに追加する:

ので、あなたのテストでは、このようなものになります。
私は、テストが壊れたときにその理由をすぐに知ることができるように、各テストメソッドで1つのことをアサートすることをお勧めします。

1

モックオブジェクトも処分することを期待してください。 (私はTypeMockを知らないが、いくつかの他の模擬フレームワークでは、これは単に "記録"段階の間にDisposeを呼び出すケースに過ぎない。)実際、私は、テストが間違っていても、とにかく、プロキシが処分されていることが確実になります。

0

プロキシのモックにDispose()へのコールを期待するように指示してください。あなたが反射モックを使用している場合、あなたは自然のモックがあなたの使用してブロック内のDispose()に電話をかけるために、この

var proxyMock = MockManager.Mock(typeof(Proxy)); 
// set up regular calls to proxy, e.g. 
proxyMock.ExpectCall("CallService"); 
proxyMock.ExpectCall("Dispose"); 

ような何かをする必要があります。

0

偽のオブジェクトがIDisposableを実装してください:

class FakeObject : IDisposable 
{ 
    public void Dispose() {} 
} 
+0

OPはTypeMockを使用しているため、明示的な偽のプロキシクラスはありません。 –

関連する問題