Нужны рекомендации по интреграционному тестированию с новым сервисом .Net Core 3.0 grpc - PullRequest
0 голосов
/ 06 октября 2019

Я играю с новым сервисом 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");
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...