Ninject:使用NSubstitute进行自动模拟?
任何人都可以提供帮助,我在使用Ninject和NSubstitute之间可用的自动模拟时遇到问题,实际上这个包是一个名为Ninject.MockingKernel.NSubstitute
的ninject包,它应该允许我使用Ninject创建Ninject.MockingKernel.NSubstitute
并返回实例注入Ninject.MockingKernel.NSubstitute
。
Moq和Rhinomocks似乎有一些例子,但我没有看到NSubstitute。
到目前为止我所拥有的是什么
this.kernel = new NSubstituteMockingKernel(); var summaryService = this.kernel.GetMock(); // GetMock not available
有人用吗?
以下是根据源代码改编的几个示例:
[TestFixture] public class Tests { /// /// Mocks are singletons. /// [Test] public void MocksAreSingletons() { using (var kernel = new NSubstituteMockingKernel()) { var firstReference = kernel.Get(); var secondReference = kernel.Get (); firstReference.Should().BeSameAs(secondReference); } } /// /// Real objects are created for auto bindable types. /// [Test] public void RealObjectsAreCreatedForAutoBindableTypes() { using (var kernel = new NSubstituteMockingKernel()) { var instance = kernel.Get(); instance.Should().NotBeNull(); } } /// /// Reals objects are singletons. /// [Test] public void RealObjectsAreSingletons() { using (var kernel = new NSubstituteMockingKernel()) { var instance1 = kernel.Get (); var instance2 = kernel.Get (); instance1.Should().BeSameAs(instance2); } } /// /// The injected dependencies are actually mocks. /// [Test] public void TheInjectedDependenciesAreMocks() { using (var kernel = new NSubstituteMockingKernel()) { var instance = kernel.Get (); instance.DummyService.Do(); instance.DummyService.Received().Do(); } } public interface IDummyService { void Do(); } public class DummyClass { public DummyClass(IDummyService dummyService) { this.DummyService = dummyService; } public IDummyService DummyService { get; set; } } }