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

提前感谢您的阅读。

4

1 回答 1

2

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

我们倾向于避免使用原始构造函数参数来支持设置对象(请参阅我们如何处理应用程序配置

于 2011-02-11T14:23:28.320 回答