Я пишу блок-тест для настраиваемого связующего (MVC 3) и хочу подтвердить все значения, которые я прошел через мой ValueProvider. потребляемого связующим (это означает, что связующее их прочитало и привязало к объекту модели). (Я также хочу тест, чтобы подтвердить, что ValueProvider с дополнительными значениями не потребляются)Как проверить все значения в ModelBindingContext.ValueProvider были потреблены с помощью настраиваемого связующего объекта.
Вот (рабочий) код для моего теста:
<Test()> _
Public Sub Should_Bind_Example_Payment_Method_To_Model()
'arrange
Dim testBindingContext As New ModelBindingContext() With {
.ModelName = "MyModel",
.ValueProvider = New NameValueCollectionValueProvider(
New NameValueCollection() From {
{"Param1", "val1"},
{"Param2", "val2"},
}, Nothing),
.ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(Nothing, GetType(MyModelType))
}
dim testControllerContext as new ControllerContext()
Dim modelBinder As New MyCustomModelBinder()
'act
Dim generatedModel As MyModelType = modelBinder.BindModel(testControllerContext, testBindingContext)
'assert
Assert.AreEqual("val1", generatedModel.Param1)
Assert.AreEqual("val2", generatedPaymentMethod.Param2)
Assert.IsTrue(testBindingContext.ModelState.IsValid)
End Sub
Я хочу, чтобы добавить строку, как это (это очевидно неверный код)
Assert.IsTrue(testBindingContext.ValueProvider.AllValuesConsumed)
Я не против нескольких утверждений, но то, что мне нужно сделать, чтобы утверждать? –
Я не думаю, что здесь есть волшебный буллит. Вам нужно знать, как связующее должно потреблять, и утверждать эти ожидания. Альтернативой является макет объекта, который может определить, были ли прочитаны все значения. – Morten
Это точно вопрос. Существуют ли какие-либо предположения, которые ModelValueProvider следует за потребляющими значениями, или мне нужно, чтобы это было с помощью макета. –