我是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这个值应该是什么?
事先,感谢阅读。
答案 0 :(得分:2)
不,我不相信有办法 - 这是AutoMocker的限制。
我们倾向于避免使用原始构造函数params来支持设置对象(参见How we handle application configuration)