У меня есть метод, как это:блок тестирования метод, который возвращает логическое значение
public bool CheckForRuleName(string ruleName, string studentId)
{
var rules =
_noSqlProvider.GetDocumentsByQuery<StudentRule>(string.Format(GET_Student_BASED_ON_RULENAME, ruleName, studentId));
if (rules.Count() != 0)
{
return true;
}
return false;
}
Написал тест блока так:
[TestMethod]
public void when_calling_CheckForRuleName_Should_Return_FALSE_WHEN_RULE_DOES_NOT_EXIST()
{
var noSqlProv = new Mock<INoSqlProvider<Document, DocumentCollection>>();
noSqlProv.Setup(x => x.GetDocumentsByQuery<StudentRule>(It.IsAny<string>()));
var rulesRepository = new RulesRepository(noSqlProv.Object);
bool rules = rulesRepository.CheckForRuleName("test123","testrule");
Assert.AreEqual(false, rules);
}
Испытание неисправного за исключением следующего:
ArgumentNullException: Value cannot be null.
Parameter name: source
Теперь метод GetDocumentsByQuery ожидает такую строку SQL:
"select j from json j where j.name='{0}' and j.studentid='{1}'"
Он запрашивает DocumentDb, просто чтобы заполнить вопрос. Поскольку это не является хорошей практикой для запроса фактический Db я использовал:
It.IsAny<string>()
Я новичок в модульное тестирование, так может кто-то пожалуйста, дать указания о том, как блок тестирования данного типа кода.
Заранее спасибо.
С уважением.
Как и в сторону, это, как правило, плохая идея 'Count()', если все, что вы хотите, чтобы проверить это существование - если возможно, использовать 'Any' или какой-то логический эквивалент, который сообщит успех, как только * один * объект найден. –