2011-08-10 4 views
38

私はRhinoMockを使い続けていましたが、Moqを探し始めました。私はこの非常に基本的な問題を抱えています。私は、次のクラス定義があるとします。Moqモックオブジェクトをコンストラクタに渡す

public class Foo 
{ 
    private IBar _bar; 
    public Foo(IBar bar) 
    { 
     _bar = bar; 
    } 
    .. 
} 

今、私は私がfooに送ることIBARをモックする必要がテストを持っています。 RhinoMocksでは、次のように私は単にそれを行うだろう、とそれだけで素晴らしい仕事になります。

var mock = MockRepository.GenerateMock<IBar>(); 
var foo = new Foo(mock); 

をしかし、部品番号では、これは同じように動作するようには思えません。次のように私がやっている:

var mock = new Mock<IBar>(); 
var foo = new Foo(mock); 

しかし、今それが失敗した - 私は間違って何をやっている「『IBAR』に 『Moq.Mock』から変換できません私に言って、これを行うための推奨方法は何ですか?部品番号で?

答えて

67

あなたはまた、インスタンスのメソッドにアクセスするためにモックオブジェクトを使用することができますモック

var mock = new Mock<IBar>(); 
var foo = new Foo(mock.Object); 

のオブジェクトインスタンスを通過する必要があります。

mock.Object.GetFoo(); 

moq docs

14
var mock = new Mock<IBar>().Object 
+0

+1受け入れいずれかになります答えの背後にわずか10秒であるために。どうも! – stiank81

+2

私は通常、このような変数にオブジェクトインスタンスを割り当てませんでした。特定の動作のためにモックを設定することができます。 – skyfoot

+0

実行時エラーの解決策だった.Objectを表示するだけでした:-) –

関連する問題