Я играю с новым сервисом GRPC для .Net Core 3.0. Я успешно создал сервис Hello World. Сейчас я пытаюсь добавить тестовый проект к этому решению.
Я вижу, как создать сервер в памяти для тестирования интеграции для обычного HTTP Client / Server .Net Core сервиса. Но я не могу найти ни одного примера или руководства в сети для использования клиент / сервер grpc protodef. Проблема, по-видимому, связана с методом CreateClient (), который возвращает простой старый HTTP-клиент, а не grpc.
Было бы хорошо, если бы в проект, созданный VS 2019, был включен базовый тест интеграции. шаблон. Основная причина, по которой я взглянул на микросервисы и, в частности, на использование grpc, заключалась в том, что у меня могут быть небольшие блоки, которые легко тестируются с помощью инфраструктуры автоматического тестирования. Но я, кажется, упал на первое препятствие.
[Добавлено]
Ниже приведен простой тестовый класс. Он использует NUnit. У меня возникла проблема с поиском способа запуска TestHost в памяти, так же как и для приложения .Net Core API или MVC, чтобы разрешить интеграционное тестирование.
namespace Project.Tests
{
public class Tests
{
private Greeter.GreeterClient _client;
private TestServer _server;
[OneTimeSetUp]
public void OneTimeSetup()
{
var server = new TestServer(WebHost.CreateDefaultBuilder()
.UseStartup<TestStartup>()
.UseEnvironment("Development")
.UseUrls("https://localhost:5001"));
}
[SetUp]
public void Setup()
{
var channel = GrpcChannel.ForAddress("https://localhost:5001");
_client = new Greeter.GreeterClient(channel);
}
[Test]
public async Task Test1()
{
var reply = await _client.SayHelloAsync(new HelloRequest { Name = "GreeterClient" });
Assert.IsTrue(reply.Message == "Hello GreeterClient");
}
}
}