2016-12-07 4 views
1

でオブジェクトのメソッドを呼び出す方法を、私はfalseNavigationオブジェクトのIsNewフラグを設定してからも、そのオブジェクトで呼び出されたメソッドIsCurrentStepUnlockedfalseを返したいですよ部品番号は:Mock.Of <>以下のステートメントで

しかし、ライン4私はIsNewの値を取得するとき、それが「本当」である

に私は、所定の値を返すために何かをオブジェクトに値を設定しても、セットアップ、両方を取得していないようです。

1. var mockStatementInformation = Mock.Of<IStatementInformation>(); 
2. mockStatementInformation.Navigation = new Navigation { IsNew = false }; 
3. Mock.Get(mockStatementInformation).Setup(x => x.Navigation.IsCurrentStepUnlocked()).Returns(false); 

4. var isNew = mockStatementInformation.Navigation.IsNew; 

ナビゲーションは、以下のように単純に定義されています。私は部品番号を使用して、その上にネストされたプロパティまたは呼び出し方法を設定するにはどうすればよい

public class Navigation 
{   
    public Navigation() 
    { 
     IsNew = true; 
    } 

    public bool IsNew { get; set; } 
} 

+0

はアドバイスとして、私はいくつかの変更を加えた、ありがとうございます。 – billboard

答えて

1

参考:Moq Quickstart - linq-to-mocks

そして、メソッドとプロパティの両方がデフォルトでtrueを返す

public interface IStatementInformation { 

    Navigation Navigation { get; set; } 
} 

public class Navigation { 

    public Navigation() { 
     IsNew = true; 
    } 

    public virtual bool IsNew { get; set; } 

    public virtual bool IsCurrentStepUnlocked() { 
     return true; 
    } 
} 

この例を想定しました。予想通り

この結果のようにテストされ

var mockStatementInformation = Mock.Of<IStatementInformation>(m => 
    m.Navigation == new Navigation { IsNew = false } && 
    m.Navigation.IsCurrentStepUnlocked() == false 
); 

Assert.IsFalse(mockStatementInformation.Navigation.IsCurrentStepUnlocked()); 
Assert.IsFalse(mockStatementInformation.Navigation.IsNew); 
+0

これはまだIsNewに対してtrueを返します。このようなコードの下に文を追加しました。var isNew = mockStatementInformation.Navigation.IsNew;検証します。 – billboard

+0

行1〜3を上記の答えに置き換えてください。私はそれをテストし、それは 'false'を返す – Nkosi

+0

それは、IsNewプロパティを仮想化しなければならないように見えます。ありがとうございました – billboard

関連する問題