IoC容器如何用于单元测试?使用IoC在大型解决方案(50多个项目)中管理模拟是否有用?有什么经验吗?是否有任何适用于在单元测试中使用它的C#库? 最佳答案 一般来说,单元测试不需要DI容器,因为单元测试就是分离职责。考虑一个使用构造函数注入(inject)的类publicMyClass(IMyDependencydep){}在您的整个应用程序中,IMyDependency背后可能隐藏着一个巨大的依赖图,但在单元测试中,您将其全部扁平化为单个TestDouble。.您可以使用Moq或RhinoMocks等动态模拟来生成测试替身,但这
IoC容器如何用于单元测试?使用IoC在大型解决方案(50多个项目)中管理模拟是否有用?有什么经验吗?是否有任何适用于在单元测试中使用它的C#库? 最佳答案 一般来说,单元测试不需要DI容器,因为单元测试就是分离职责。考虑一个使用构造函数注入(inject)的类publicMyClass(IMyDependencydep){}在您的整个应用程序中,IMyDependency背后可能隐藏着一个巨大的依赖图,但在单元测试中,您将其全部扁平化为单个TestDouble。.您可以使用Moq或RhinoMocks等动态模拟来生成测试替身,但这
我在使用Moq的测试中有一些代码:publicclassInvoice{...publicboolIsInFinancialYear(FinancialYearLookupfinancialYearLookup){returnInvoiceDate>=financialYearLookup.StartDate&&InvoiceDate所以在单元测试中我试图模拟这个方法并让它返回truemockInvoice.Setup(x=>x.IsInFinancialYear()).Returns(true);有没有办法写这一行,这样我就不必指定IsInFinancialYear的输入。IE。所以
我在使用Moq的测试中有一些代码:publicclassInvoice{...publicboolIsInFinancialYear(FinancialYearLookupfinancialYearLookup){returnInvoiceDate>=financialYearLookup.StartDate&&InvoiceDate所以在单元测试中我试图模拟这个方法并让它返回truemockInvoice.Setup(x=>x.IsInFinancialYear()).Returns(true);有没有办法写这一行,这样我就不必指定IsInFinancialYear的输入。IE。所以
我正在尝试为我的ApiController编写一些单元测试,但遇到了一些问题。有一个名为Request.CreateResponse的很好的扩展方法,它对生成响应有很大帮助。publicHttpResponseMessagePost(Productproduct){varcreatedProduct=repo.Add(product);returnthis.Request.CreateResponse(HttpStatusCode.Created,createdProduct);}有没有什么方法可以在不使用部分模拟或直接使用“newHttpResponseMessage(...)”的情
我正在尝试为我的ApiController编写一些单元测试,但遇到了一些问题。有一个名为Request.CreateResponse的很好的扩展方法,它对生成响应有很大帮助。publicHttpResponseMessagePost(Productproduct){varcreatedProduct=repo.Add(product);returnthis.Request.CreateResponse(HttpStatusCode.Created,createdProduct);}有没有什么方法可以在不使用部分模拟或直接使用“newHttpResponseMessage(...)”的情
我有一个预先存在的界面...publicinterfaceISomeInterface{voidSomeMethod();}我已经使用mixin扩展了这个接口(interface)......publicstaticclassSomeInterfaceExtensions{publicstaticvoidAnotherMethod(thisISomeInterfacesomeInterface){//Implementationhere}}我有一个类调用这个我想测试...publicclassCaller{privatereadonlyISomeInterfacesomeInterfa
我有一个预先存在的界面...publicinterfaceISomeInterface{voidSomeMethod();}我已经使用mixin扩展了这个接口(interface)......publicstaticclassSomeInterfaceExtensions{publicstaticvoidAnotherMethod(thisISomeInterfacesomeInterface){//Implementationhere}}我有一个类调用这个我想测试...publicclassCaller{privatereadonlyISomeInterfacesomeInterfa
据我了解,如果我调用更高级别的方法,我可以测试是否会发生方法调用,即:publicabstractclassSomeClass(){publicvoidSomeMehod(){SomeOtherMethod();}internalabstractvoidSomeOtherMethod();}我想测试一下,如果我调用SomeMethod(),那么我希望SomeOtherMethod()会被调用。我是否认为这种测试可以在模拟框架中使用? 最佳答案 您可以使用Verify来查看您模拟的对象中的方法是否已被调用,例如:staticvoidM
据我了解,如果我调用更高级别的方法,我可以测试是否会发生方法调用,即:publicabstractclassSomeClass(){publicvoidSomeMehod(){SomeOtherMethod();}internalabstractvoidSomeOtherMethod();}我想测试一下,如果我调用SomeMethod(),那么我希望SomeOtherMethod()会被调用。我是否认为这种测试可以在模拟框架中使用? 最佳答案 您可以使用Verify来查看您模拟的对象中的方法是否已被调用,例如:staticvoidM