2012-07-18 9 views
17

(タグで示されるように、私はmoqを使用しています)。私はこのようなインタフェースを持ってMockの別のプロパティに依存するreadonlyプロパティをモックする方法

:私のアプリケーションで

interface ISource 
{ 
    string Name { get; set; } 
    int Id { get; set; } 
} 

interface IExample 
{ 
    string Name { get; } 
    ISource Source { get; set; } 
} 

を、IExampleの具体的な事例は、ソースとしてDTO(IDataTransferObject)を受け入れます。 IExampleの具体的な実装の一部のプロパティは、単にSourceに委譲されます。このような...

class Example : IExample 
{ 
    IDataTransferObject Source { get; set; } 

    string Name { get { return _data.Name; } } 
} 

私はIExampleのスタンドアロンモック(IExampleのモックのいくつかのインスタンスは、テストの過程で作成されますので、私は捕獲変数を使用することはできませんスタンドアロンの意味)を作成したいとIExample.NameがIExample.Source.Nameの値を返すようにMockを設定します。だから、私はこのようなモック何かを作成したいと思います:基本的に

var example = new Mock<IExample>(); 
example.SetupProperty(ex => ex.Source); 
example.SetupGet(ex => ex.Name).Returns(what can I put here to return ex.Source.Name); 

を、私は、1つのプロパティの値として、モックのサブオブジェクトのプロパティの値を返すためにモックを設定したいです。

ありがとうございました。

答えて

28

あなたは、おそらく使用することができますプロパティがアクセスされたときに

example.SetupGet(ex => ex.Name).Returns(() => example.Object.Source.Name); 

を返される値が決定され、モックのSource財産のNameプロパティから取得されます。

+0

それは私が欲しいものです。私が参照したいモックであるローカル変数をキャプチャして、その根本的な価値を得ることは決してありませんでした。それは私の脳を傷つける。 – wageoghe

関連する問題