MoqAutoMocker和原始构造函数参数

时间:2011-02-11 11:05:22

标签: .net unit-testing structuremap automocking

我是StructureMap MoqAutoMocker的狂热用户,但有时我们遇到了我们的“老朋友”。假设一个类“Validator”

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这个值应该是什么?

事先,感谢阅读。

1 个答案:

答案 0 :(得分:2)

不,我不相信有办法 - 这是AutoMocker的限制。

我们倾向于避免使用原始构造函数params来支持设置对象(参见How we handle application configuration