2

Nunit フレームワークを使用して、ServiceStack API の単体テストを作成しました。以下のようなコード

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 オブジェクトの null 参照例外が発生しています。クライアント (郵便配達員または残りのクライアント) を使用してサーバーにアクセスすると、応答オブジェクトが初期化されますが、単体テストでは応答オブジェクトが初期化されません。前もって感謝します。

4

1 に答える 1

5

サービス層が応答オブジェクトを初期化するように、要求オブジェクトをモックする必要があります。

次のコード変更は私にとってはうまくいきました。

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

次に、サービス メソッドを呼び出します。

于 2016-03-14T12:16:02.413 に答える