我正在使用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答案是可以接受的。我怎样才能解决这个错误?
答案 0 :(得分:0)
我在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);
//...
}