3

私は StructureMap MoqAutoMocker の熱心なユーザーですが、時々、私たちの「旧友」に出くわします。クラス「バリデーター」を想定

public class Validator
{
   private string _connectionString;
   private IEventMachine _eventMachine;

   public Validator(string connectionString, IEventMachine eventMachine)
   {
      _connectionString = connectionString;
      _eventMachine = eventMachine;
   }
} 

上記のクラスは実際には問題ではありません。実際、おそらくいくつかの眉をひそめるでしょう。鼻先からのより良い例が思いつかなかったので、この投稿のために作成しています。ポイントは、プリミティブ データ型 ( connectionString ) とインターフェイス ( eventMachine ) の組み合わせが含まれていることです。単体テスト中は、通常、次のような期待値を設定します。

[TestMethod]
public void Validate_WhenCalled_PublishesEnterEvent()
{
    // Arrange
    var Instance = new MoqAutoMocker<Validator>();
    var eventMachineMock = Mock.Get(AutoMock.Get<IEventMachine>());

    // Act
    Instance.Validate();

    // Assert
    eventMachineMock.Verify(m => m.Publish( It.IsAny<string>(), Times.Once());        
}

したがって、問題は次のとおりです。MoqAutoMockerは connectionString 引数を受け入れることができないため、上記は機能しません。これは、MoqAutoMocker のインターフェイス (またはその他のプリミティブ) が見つからないためです。私の質問は単純です:この値がどうあるべきかをMoqAutoMockerに伝える方法はありますか?

事前に、お読みいただきありがとうございます。

4

1 に答える 1

2

いいえ、方法があるとは思いません。これはAutoMockerの制限です。

設定オブジェクトを優先して、プリミティブコンストラクターパラメーターを回避する傾向があります(アプリケーション構成の処理方法を参照) 。

于 2011-02-11T14:23:28.320 に答える