2012-03-14 10 views
16

部品番号VerifySet(アクション)の交換時代遅れ表現コンパイルエラー

[Test] 
public void OnSearchRequest_ViewFiresEvent_EventIsHandled() 
{ 
    // Arrange 
    Mock<IViewUsers> view = new Mock<IViewUsers>(); 
    Users users = new Users(view.Object); 

    // Act 
    view.Raise(v => v.SearchForUsers += null, this, new SearchEventArgs()); 

    // Assert 
    view.VerifySet(v=> v.SearchResult = It.IsAny<List<IUser>>()); 

} 

もともと私が持っていた::

Moq how to replace obsolete expression

私は、次のしている

 // Assert 
     view.VerifySet(v => v.SearchResult); 

しかし、警告を受け取っていた:

'Moq.MockExtensions.VerifySet(Moq.Mock、 System.Linq.Expressions.Expression>)' は 廃止されました:

'をVerifySet(アクション)に置き換えられました' だから私は、質問を見つけました上で参照して一致するように変更しましたが、今でも私はまだその警告を受けています。その上に、VerifySetへの呼び出し内の "v.SearchResult"のハードエラーが表示されます:

式ツリーは、代入演算子は含まれません。

私はこれを不適切にフォーマットしていることがわかりません。他の質問と同様に、これをアクションとして認識していないのはなぜですか?

+0

お使いのMoqのバージョンは?私は4.0.10827.0の小さなレプロを作成しています。これは緑で、古い警告なしでコンパイルするので...テストのクラスがどのように見えるかをさらに詳しく説明する必要があります。 – nemesv

+0

moq 4.0.10827.0 –

+0

あなたはどんなコンテクストを望みますか? –

答えて

0

助けても分かりませんが、リストでIt.IsAny<>を使用して過去に問題が発生しました。 It.Is<List<IUser>>(l => l != null)のようなものを試してみませんか?

1

あなたが尋ねているものに比較的近いものが見つかりました。 Moq how to replace obsolete expressionmock.Setupmock.Verifyを使用しただけなので、これが役立つかどうかわかりません。

また、先に述べたように、It.IsAny内のラムダ式を使用して、このように小さなものを特定してみてください。検証が失敗した場合、失敗した場所を正確に知ることができます。特に、例えば、あるポジションでの価値を期待している場合。

関連する問題