2017-06-19 8 views
2

Moq.Automock私の以前のプロジェクトで使用したかったプロジェクトです。 Currency:私は上記のコードは、私が呼ばれるモックオブジェクトを作成したことを示していると信じてセットアップが正常に動作していないAutMocker

[TestFixture] 
public class BusinessLayerTests 
{ 
    List<Denomination> expectedDenominations; 

    AutoMocker mocker = new AutoMocker(); 
    UKCurrency Currency; 
    IDenominationFactory DenominationFactory; 

    [OneTimeSetUp] 
    public void Initialize() 
    { 
     Currency = mocker.CreateInstance<UKCurrency>(); 
     DenominationFactory = mocker.CreateInstance<DenominationFactory>();   
     mocker.Setup<UKCurrency>(x => x.CurrencyDenominations()).Returns(CurrencyDenominations()); 
    } 

    public System.Collections.Generic.IEnumerable<decimal> CurrencyDenominations() 
    { 
     yield return 50M; 
    } 
} 

:以下のコードを参照してください。私は、開始ライン:mocker.Setupは、ローカルメソッドが:CurrencyDenominationsが呼び出されることを確認する必要があります。しかし、これは起こりません。呼び出されるメソッドはCurrencyDenominationsで、UKCurrencyが呼び出されます。

私は間違っていますか?

答えて

1

基本的なモックを取得し、それにセットアップを適用する必要があります。

[OneTimeSetUp] 
public void Initialize() { 
    Currency = mocker.CreateInstance<UKCurrency>(); 
    DenominationFactory = mocker.CreateInstance<DenominationFactory>(); 
    var currencyMock = mocker.GetMock<UKCurrency>(); 
    currencyMock.Setup(_ => _.CurrencyDenominations()).Returns(CurrencyDenominations()); 
} 

UKCurrency.CurrencyDenominations仮想およびオーバーライドすることができるが提供されます。

関連する問題