如何使用 Rhino Mocks 存根 ninject 的 IKernel?
var mocks = new MockRepository();
var access = new Access();
access.ShowRepository = _mocks.Stub<IShowRepository>();
access.ShowRepository.Stub(x => x.GetShows()).Return(new List<Show>());
var kernel =_mocks.Stub<IKernel>();
kernel.Stub(x => x.Get<Access>()).Return(access);
这会引发 ArgumentNullException:
消息:值不能为空。
参数名称:来源
堆栈跟踪: 在 System.Linq.Enumerable.Cast[TResult](IEnumerable 源) 在 Ninject.ResolutionExtensions.Get[T](IResolutionRoot 根,IParameter[] 参数) 在 C:\Users\Dave\Documents\Visual Studio 2010\Projects\Gigatube\MediaMover.Unit.Tests\ViewModelTests\OptionsViewModelTests.cs 中的 MediaMover.Unit.Tests.B__1(IKernel x):第 33 行 在 Rhino.Mocks.RhinoMocksExtensions.Expect[T,R](T 模拟,函数 2 操作) 在Rhino.Mocks.RhinoMocksExtensions.Stub[T,R](T 模拟,函数
2 操作) 在 C:\Users\Dave\Documents\Visual Studio 2010\Projects\Gigatube\MediaMover.Unit.Tests\ViewModelTests\OptionsViewModelTests.cs 中的 MediaMover.Unit.Tests.ViewModelTests.OptionsViewModelTests.Initialize() 处:第 33 行
var mocks = new MockRepository();
var access = new Access();
access.ShowRepository = _mocks.Stub<IShowRepository>();
access.ShowRepository.Stub(x => x.GetShows()).Return(new List<Show>());
var kernel =_mocks.Stub<IKernel>();
kernel.Stub(x => x.Get<Access>()).Return(access);
This throws an ArgumentNullException:
Message: Value cannot be null.
Parameter name: source
Stack Trace:
at System.Linq.Enumerable.Cast[TResult](IEnumerable source)
at Ninject.ResolutionExtensions.Get[T](IResolutionRoot root, IParameter[] parameters)
at MediaMover.Unit.Tests.ViewModelTests.OptionsViewModelTests.b__1(IKernel x) in C:\Users\Dave\Documents\Visual Studio 2010\Projects\Gigatube\MediaMover.Unit.Tests\ViewModelTests\OptionsViewModelTests.cs:line 33
at Rhino.Mocks.RhinoMocksExtensions.Expect[T,R](T mock, Function2 action)
2 action)
at Rhino.Mocks.RhinoMocksExtensions.Stub[T,R](T mock, Function
at MediaMover.Unit.Tests.ViewModelTests.OptionsViewModelTests.Initialize() in C:\Users\Dave\Documents\Visual Studio 2010\Projects\Gigatube\MediaMover.Unit.Tests\ViewModelTests\OptionsViewModelTests.cs:line 33
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我能够解决这个问题,我必须创建一个测试模块和一个测试提供程序,并通过它们传递我的模拟。
这是我的测试设置:
I was able to solve this, I had to create a test module and a test provider and pass my mocks through those.
Here is my SetUp from my test: