我的问题如下:
我有ms单元测试,它使用存根的http上下文进行mvc路由测试。但代码的一部分(使用rhino mock)存在问题:
var httpContextMock = MockRepository.GenerateStub<HttpContextBase>();
httpContextMock.Stub(c => c.Request.AppRelativeCurrentExecutionFilePath)
.Return(url);
在调试模式下,第二行抛出异常:
为什么会出现这样的错误?虽然测试是在没有调试器的情况下进行的,但一切正常。
此致
答案 0 :(得分:1)
这真的很奇怪。对我来说很奇怪的是你的代码在非调试模式下工作。 Request
属性不是存根的,所以你无法真正知道它会返回什么。您可以尝试以下方法:
var httpContextMock = MockRepository.GenerateStub<HttpContextBase>();
var httpRequestMock = MockRepository.GenerateStub<HttpContextBase>();
httpContextMock.Stub(c => c.Request).Return(httpRequestMock);
httpRequestMock.Stub(c => c.AppRelativeCurrentExecutionFilePath).Return(url);
答案 1 :(得分:0)
我也遇到了这个问题,并通过删除解决方案的.suo
文件来修复它。
在切换存储在Break when Common Language Runtime Exception is thrown
文件中的suo
设置时,我似乎也得到了不同的例外(调试菜单 - &gt;异常)
答案 2 :(得分:0)
问题是你的存根方法。仅使用.Return()
,它只会将此值返回一次。如果您不关心存根应返回值的次数,则应使用.Return().Repeat.Any()
。