Извините, это, вероятно, очень любительский вопрос, но я изо всех сил пытаюсь понять, как правильно использовать Moq. Я совершенно новичок в модульном тестировании в целом, но я думаю, что начинаю , чтобы освоить его.
Итак, вот мой вопрос ... У меня есть следующий фрагмент кода, который использует TestServer
в Visual Studio, который я использую для тестирования модулей ... Я пытаюсь смоделировать IGamesByPublisher
, чтобы мой тест не зависит от данных в хранилище (или было бы лучше издеваться GamesByPublisher
? ... Или мне нужно сделать и то и другое?)
public static TestServerWithRepositoryService => new TestServer(services =>
{
services.AddScoped<IGamesByPublisher, GamesByPublisher();
}).AddAuthorization("fake.account", null);
[Fact] // 200 - Response, Happy Path
public async Task GamesByPublisher_GamesByPublisherLookup_ValidRequestData_Produces200()
{
// Arrange
var server = ServerWithRepositoryService;
// Act
var response = await server.GetAsync(Uri);
// Assert
Assert.NotNull(response);
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
}
Вот это IGamesByPublisher
public interface IGamesByPublisher interface.
{
Task<IEnumerable<Publisher>> Execute(GamesByPublisherQueryOptions options);
}
}
Я пытался
public static TestServerWithRepositoryService => new TestServer(services =>
{
services.AddScoped<Mock<IGamesByPublisher>, Mock<GamesByPublisher>>();
}).AddAuthorization("fake.account", null);
А потом я попробовал
// Not exactly what I attempted, but that code is long gone...
var mock = new Mock<IGamesByPublisher >();
var foo = new GamesByPublisherQueryOptions();
mock.Setup(x => x.Execute(foo)).Returns(true);
На самом деле я не нашел отличной документации по использованию Moq, просто краткое руководство по GitHub, которое я не знал, как его применять (вероятно, мой собственный уровень опыта виноват ...).
Мне явно не хватает некоторых основ использования Moq ...