Rhino Mock vs调试模式?

时间:2011-09-08 08:26:23

标签: c# .net asp.net-mvc unit-testing rhino-mocks

我的问题如下:

我有ms单元测试,它使用存根的http上下文进行mvc路由测试。但代码的一部分(使用rhino mock)存在问题:

var httpContextMock = MockRepository.GenerateStub<HttpContextBase>();
httpContextMock.Stub(c => c.Request.AppRelativeCurrentExecutionFilePath)
   .Return(url);

在调试模式下,第二行抛出异常:

enter image description here

为什么会出现这样的错误?虽然测试是在没有调试器的情况下进行的,但一切正常。

此致

3 个答案:

答案 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;异常)

enter image description here

答案 2 :(得分:0)

问题是你的存根方法。仅使用.Return(),它只会将此值返回一次。如果您不关心存根应返回值的次数,则应使用.Return().Repeat.Any()