Определения типов должны начинаться с '{', ожидая сериализованного типа 'ErrorResponse', получая строку, начинающуюся с: MOCK FOR URL NOT FOUND - PullRequest
0 голосов
/ 28 июня 2018

Я пишу модульный тест с 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

Я сделал почти идентичную настройку для более простого класса, и он работает, но этот класс отказывается от модульного тестирования правильно. Он работает нормально, когда работает локально.

1 Ответ

0 голосов
/ 28 июня 2018

Это исключение возникает, когда JSON не соответствует типу, в который вы пытаетесь десериализоваться.

...