【问题标题】:Error when mocking HttpContextBase模拟 HttpContextBase 时出错
【发布时间】:2014-10-07 19:50:14
【问题描述】:

我正在使用 Rhino Mocks 来生成一个 Mock 对象。我有以下单元测试

<TestClass()> Public Class VariousTests
  Dim mocks As New MockRepository()
  Dim _mockContext = mocks.PartialMock(Of HttpContextBase)()
  Dim _mockRequest = mocks.PartialMock(Of HttpRequestBase)()

<TestMethod()> Public Sub btnSubmitPage1_ClickTest()
    Dim uri As New Uri("http://mypcname.local")
    SetupResult.For(_mockContext.Request).Return(_mockRequest)
    SetupResult.For(_mockContext.Request.Url).Return(uri)
    SetupResult.For(_mockContext.Request.Url.AbsoluteUri).Return(uri) 'Error happens here
    HttpContextFactory.SetCurrentContext(_mockContext)
    '...
End Sub

End Class

我在指示的行上收到错误:

附加信息:以前的方法'HttpContextBase.get_Request();'需要返回值或抛出异常。

C# 或 VB.NET 答案是可以接受的。我怎样才能克服这个错误?

【问题讨论】:

  • 你试过_mock.Setup( ... ).Returns(...)?或_mock.SetupGet( ... ).Returns( ... )
  • @W92 - 不,我对 Mock 框架不是很熟练。也许这就是我的问题所在。
  • 也许对你有帮助:stackoverflow.com/questions/1389744/…
  • @W92 - 我认为你在正确的轨道上。我只需要弄清楚如何将其应用于 Rhino Mocks。
  • 对不起,我从不使用这个 dll,但也许(再次)它可以帮助你:pluralsight.com/courses/rhinomock-fundamentals

标签: c# vb.net rhino-mocks


【解决方案1】:

我用 C# 重新编写了测试,它成功了。我现在所拥有的与上面的有点不同。但总体差异很小。现在可以了。

[TestClass]
public class VertrueSignupViewTests
{
    private SplContextProvider _splProvider = new SplContextProvider();
    private IVertrueSignupView _form = MockRepository.GenerateMock<IVertrueSignupView>();
    private IFeatureToggle _toggle = MockRepository.GenerateMock<IFeatureToggle>();
    HttpContextBase mockHttpContext = MockRepository.GenerateMock<HttpContextBase>();
    HttpRequestBase mockRequest = MockRepository.GenerateMock<HttpRequestBase>();
    HttpResponseBase mockResponse = MockRepository.GenerateMock<HttpResponseBase>();
    HttpSessionStateBase httpSessionState = MockRepository.GenerateMock<HttpSessionStateBase>();

    [TestMethod]
    public void ButtonSubmitTest()
    {
        mockHttpContext.Stub(x => x.Request).Return(mockRequest);
        mockHttpContext.Stub(x => x.Session).Return(httpSessionState);
        mockHttpContext.Stub(x => x.Response).Return(mockResponse);
        _toggle.Stub(t => t.IsOn()).Return(true);

        var uri =
            new Uri(
                "http://mypc.local/");
        mockRequest.Stub(u => u.Url).Return(uri);
        mockRequest.Stub(u => u.QueryString)
            .Return(col);

        HttpContextFactory.SetCurrentContext(mockHttpContext);
        //...
    }

【讨论】:

    猜你喜欢
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 2016-03-20
    • 2021-04-09
    相关资源
    最近更新 更多