У меня есть приложение ASP.NET (базовая форма, где я собираю некоторые данные) в VS2017.
Одним из полей в форме является Mark, которое является целым числом.
У меня есть следующий блок кода для Mark в моем файле .cs.
[Display(Name = "Mark")]
[Range(1, 10, ErrorMessage = "Mark must be between 1 and 10")]
public int Mark{ get; set; }
Я создал проект MSTest для этого приложения для написания модульных тестов.
Мой вопрос: вы пишете тестовые случаи для этого блока, чтобы убедиться, что входное значение находится в ожидаемом диапазоне?
Если да, то как ты это пишешь?
Я начал с этого.
[DataRow(0, "Mark must be between 1 and 10")]
[DataRow(11, "Mark must be between 1 and 10")]
[DataTestMethod]
public void TestMark_IsMarkValid_NotValid(int mark, string expectedMsg)
{
//Arrange
Student testStudent = new Student();
testStudent.Mark = mark; //this does not throw any error, although the assigned value is outside of the defined range. But it looks like the range validation only applies to the webform.
//Act
string actualMsg = "Mark must be between 1 and 10"; //this is not correct. I was thinking to capture in the actual result the error message yield by the Range validation, but assigning a value outside range doesn't yield any error message.
//Assert
Assert.AreEqual(expectedMsg, actualMsg);
}
Теперь не уверен, должен ли этот блок находиться в области видимости для модульного тестирования. Если это так, я чувствую, что мой подход неверен.
Есть мысли, пожалуйста?
Большое спасибо,
Космин