Vb.net Moq、VB、HttpResponseBase和标头
我正在用VB中的Moq编写一些自定义控制器的测试堆。到目前为止,我还没有处理过VB Lambda的缺点,因为我只处理过moqed属性或方法 直到今天早上,我还尝试使用Cassini对我的代码运行集成测试。我有使用Response.headers.add添加标题的代码。我这样做是为了在单元测试中使用Moq(HttpResponseBase的)和SetupGet for headers->NameValueCollection轻松获得headers集合。当然,除了集成管道模式下的IIS7之外,代码在任何情况下都会阻塞 因此,我将代码改为使用Response.AddHeader,这意味着我的单元测试失败。由于我在VB中,我看不到将AddHeader调用映射到Headers集合的合理方法,因为函数()在VB中需要返回值 我在这里看到了一些关于Moq和VB的条目,但是没有人真正有将sub映射到Moq中其他内容的问题Vb.net Moq、VB、HttpResponseBase和标头,vb.net,moq,Vb.net,Moq,我正在用VB中的Moq编写一些自定义控制器的测试堆。到目前为止,我还没有处理过VB Lambda的缺点,因为我只处理过moqed属性或方法 直到今天早上,我还尝试使用Cassini对我的代码运行集成测试。我有使用Response.headers.add添加标题的代码。我这样做是为了在单元测试中使用Moq(HttpResponseBase的)和SetupGet for headers->NameValueCollection轻松获得headers集合。当然,除了集成管道模式下的IIS7之外,代码在
有人在VB中使用Moq解决过这种特殊情况吗。为什么在您发布后,解决方案总是变得明显::-) 这是丑陋的,但它的工作
- 子类HttpResponseBase
- 模拟它并将CallBase设置为True
Dim response As New Mock(Of CustomHttpResponse)
response.SetupGet(Function(r As HttpResponseBase) r.Headers).Returns(New NameValueCollection)
response.CallBase = True
Public Class CustomHttpResponse
Inherits HttpResponseBase
Public Overrides Sub AddHeader(ByVal name As String, ByVal value As String)
Me.Headers.Add(name, value)
End Sub
Public Overrides Sub AppendHeader(ByVal name As String, ByVal value As String)
Me.Headers.Add(name, value)
End Sub
End Class