ServiceStack Unit test — объект ответа serviceStack не инициализируется

Я использовал платформу Nunit для написания модульного теста для API ServiceStack. код, как показано ниже

public class AppHost : AppHostBase
{
    public AppHost()
        : base("SearchService", typeof(SearchService).Assembly)
    {

    }
}

Класс обслуживания, как показано ниже

public class SearchService:Service
{
   public SearchResponse Get(SearchRequest request)
   { 
     // to stuff
     Response.StatusCode = (int)HttpStatusCode.OK;
     return SearchReponse;
   }
}

класс модульного теста, как показано ниже

 [TestFixture]
public class SearchServiceTests
{
    private readonly ServiceStackHost appHost;

    public SearchServiceTests()
    {
        appHost = new BasicAppHost(typeof(SearchService).Assembly)
        {
        }.Init();

    }
     [TestFixtureTearDown]
    public void TestFixtureTearDown()
    {
        appHost.Dispose();
    }


    [Test]

    public void TestMethod1()
    {
        var service = appHost.Container.Resolve<SearchService>();

        var r= service.Get(new SearchRequest());

       Assert.That(r, Is.Not.Null);

    }
    }

Я получаю исключение нулевой ссылки для объекта Response. Когда я нажимаю на сервер с помощью любого клиента (почтальона или остального клиента), этот объект ответа инициализируется, но через модульный тест объект ответа не инициализируется, может ли кто-нибудь сказать мне, почему это происходит? Заранее спасибо.


person JSP.NET    schedule 14.03.2016    source источник


Ответы (1)


необходимо имитировать объект запроса, чтобы уровень обслуживания инициализировал объект ответа.

следующее изменение кода сработало для меня.

   var service = appHost.Container.Resolve<SearchService>();
        service.Request = new MockHttpRequest(); 

затем сделайте вызов метода службы.

person JSP.NET    schedule 14.03.2016