Я пишу модульный тест с Xunit и Moq на микросервисе ServiceStack .
Я могу заставить модульный тест маршрута GET работать с одним классом, но с другим классом он отказывается работать. Я использую ServiceStack.JsonHttpClient.GET
на этом маршруте:
public SampleResponse Get(SampleRequest request)
{
var myServiceRequest = new SampleService.myRequest() { PrimaryId = request.PrimaryId };
using (client = ClientFactory.CreateSampleService()) // client is extension of ServiceStack.JsonHttpClient
{
// This code runs on local but throws the exception with unit testing
SampleService.myResponse myResponse = client.Get(myServiceRequest);
...
}
}
А вот и тест:
// Arrange
var myServiceRequest = new SampleService.myRequest { PrimaryId = 1234 };
var myServiceResponse = new SampleService.myResponse { ... };
// assigning the request with the desired response
mockService.MockGet(myServiceRequest, myServiceResponse);
// Act
var request = new ServiceModel.SampleRequest { PrimaryId = 1234 };
// This calls the above function and fails
var response = frontEndService.Get(request);
// Assert
Assert.NotEmpty(response.Items);
Assert.Equal(3, response.Items.ANumber);
Но я получаю это исключение и InnerException:
ServiceStack.WebException: 'Not Found'
Внутреннее исключение
SerializationException: определения типов должны начинаться с '{', ожидая сериализованного типа 'ErrorResponse', полученная строка начинается с: MOCK FOR URL NOT FOUND
Я сделал почти идентичную настройку для более простого класса, и он работает, но этот класс отказывается от модульного тестирования правильно. Он работает нормально, когда работает локально.