MoqAutoMocker和原始构造函数参数

问题描述:

我是StructureMap MoqAutoMocker的一个*用户,但有时我们遇到了我们的“老朋友”。假设一类“验证”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这个值应该是什么?

提前,谢谢你的阅读。

不,我不相信有一种方法 - 它是AutoMocker的限制。

我们倾向于避免原始构造器参数偏向设置对象(请参阅How we handle application configuration