2011-08-11 10 views
0

私はRhinoMocks 3.6を使用しています。クラスとインターフェイスの両方を実装するためにマルチロック機能を使用したいと考えています。マルチモックでのイベント登録の期待値を設定するには

var mocks = new MockRepository(); 
var project = mocks.StrictMultiMock(
         typeof(Project), 
         typeof(INotifyCollectionChanged)); 
using (mocks.Record()) 
{ 
    ((INotifyCollectionChanged)project).CollectionChanged += null; 
    LastCall.Constraints(Is.NotNull()).Repeat.Any(); 
} 

LastCallでも動作しています。私はこのメッセージが表示されます。

のSystem.InvalidOperationException:無効な呼び出し、(あなたは仮想(C#の)/オーバーライド可能(VB)メソッドを呼び出していることを確認してください)最後の呼び出しが使用されているか、何の呼び出しが行われていません。

私はここで間違っていますか?

+0

テスト中のメソッドのいくつかを共有できますか? –

答えて

0

実際に、エラーメッセージに示されているように、プロジェクトクラスにオーバーライドできるメソッドがあることを確認しましたか?私はあなたが持っていると仮定します。 :-)

私はあなたがここに示すように、AAAの構文の代わりに、記録/再生の使用に切り替えることをお勧めしたい:

私はあなたがテスト対象のクラスは、時に正しい方法を反応するかどうかを知りたいと思っていると仮定CollectionChangedイベントが発生しましたか?そのような場合は、次のようにすることができます。

var project = MockRepository.GenerateMock<Project, INotifyPropertyChanged>(); 
project.Expect(p => p.SomeMethod()) 
    .Repeat.Any() 
    .Raise(p => ((INotifyCollectionChanged)p).CollectionChanged += null,p,new NotifyCollectionChangedEventArgs()); 
関連する問題