У меня есть класс проверки, который я пытаюсь проверить FluentQuestionAnswerValidator
, но у этого класса есть зависимость IQuestionAnswerRepository
, которую необходимо передать через конструктор, чтобы создать экземпляр класса валидатора.
Чтобы попытаться создать экземпляр класса, я использую Moq для макета репозитория, который затем можно передать в валидатор.
Однако я получаю ошибку типа, когда пытаюсь передать проверенный репозиторий в валидатор при его создании:
Error CS1503 Argument 2: cannot convert from
'Moq.Mock<IQuestionAnswerRepository>' to 'IQuestionAnswerRepository'
Как изменить полученный код, чтобы он принимал макетированное хранилище в качестве своей зависимости?
class QuestionAnswerValidationTest
{
private QuestionAnswer _qaTest;
private FluentQuestionAnswerValidator _validator;
private Mock<IQuestionAnswerRepository> mockRepo;
[SetUp]
public void Setup()
{
_qaTest = new QuestionAnswer()
{
Id = 2,
Type = "Number",
Required = true,
QuestionSection = 1,
};
QuestionAnswer qa = new QuestionAnswer()
{
Id = 1,
Type = "String",
Required = true,
QuestionSection = 1,
Answer = "Yes",
ConditionalQuestionId = null,
ConditionalQuestionAnswered = null
};
Dictionary<int, QuestionAnswer> questionMap = new Dictionary<int, QuestionAnswer>();
questionMap.Add(qa.Id, qa);
mockRepo = new Mock<IQuestionAnswerRepository>(MockBehavior.Strict);
mockRepo.Setup(p => p.QuestionMap).Returns(questionMap);
}
[Test]
public void Validate_AnswerDoesNotMatchQuestionType_ProducesValidationError()
{
_qaTest.Answer = "string";
_validator = new FluentQuestionAnswerValidator(_qaTest, mockRepo);
}
}