我可以指示AutoFixture还填写私人财产,其中注明了所有类的特定属性,例如Ninject.Inject
?源似乎只扫描公共属性:1。这个问题提供了一个专用MyClass
与私人setter,但不是私人财产或所有类的解决方案:2。AutoFixture和私人财产
我使用Moq来模拟服务,最后我想用这些模拟来填充属性。如果我公开MyService依赖关系为public
,以下设置工作正常。
一些示例代码:
public class MyController {
[Inject]
private IMyService MyService { get; set; }
public void AMethodUsingMyService() {
MyService.DoSomething();
// ...
}
// ...
}
public class MyService : IMyService {
public void DoSomething()
{
// ...
}
// ...
}
public class MyControllerTest {
[Theory]
[AutoMoqData]
public void MyTest(MyController controller) {
controller.AMethodUsingMyService();
}
}
NB Ninject 2或更高版本不支持注入'私人'(它不应该包含在'马克的答案中)。真的不这样做 –
我使用的版本是3.0.1.10,只要你指示Ninject注入它们('InjectNonPublic'),注入'private's就可以正常工作。我同意马克的回答! – Jani
该死的曾经以为这个选项也在V2 reimpl中死了,但我立场纠正。这意味着这些文档是错误的(它说,在我上次查看并在两年前使事情保持一致时,许多地方的V2注入了私有化)。可悲的是,我无法激励自己在wiki中解决这些问题 - 希望其他人能够解决这些问题。 –