Moq может изменять только перезаписываемые элементы.HttpRequestBase.Params
- это NameValueCollection
Вы получаете сообщение об ошибке, потому что свойство NameValueCollection
Public Property Item (name As String) As String
не может быть переопределено.
Используйте фактические NameValueCollection
ипередайте это как Params
свойство
<TestMethod()>
Public Sub Test()
`Arrange
Dim Request = New Mock(Of System.Web.HttpRequestBase)()
Dim httpContext = New Mock(Of System.Web.HttpContextBase)()
Dim parameters As New NameValueCollection()
parameters("FieldName") = "test"
Request.Setup(Function(x) x.Params).Returns(parameters)
httpContext.Setup(Function(x) x.Request).Returns(Request.[Object])
Dim controller = New BookingController(...)
`assign the mock http context to controller
controller.ControllerContext = New ControllerContext()
controller.ControllerContext.Controller = controller
controller.ControllerContext.HttpContext = httpContext.[Object]
`Act
`...
`Assert
`...
End Sub
Теперь у вас есть больше возможностей для настройки поведения поддельного запроса