在不使用 Microsoft.AspNetCore.TestHost 中包含的 TestServer

我正在使用 SoapCore 来创建使用 asp.net core 2 的 WCF-ish 类型的应用程序。


这对我来说很好用,但在集成测试我的端点时,我有点碰壁。


由于 SoapCore 是一个中间件并且与任何 api 控制器都没有关系,因此我无法使用 HttpClient 来测试端点,因此 TestServer 对我没有用。


我的问题是如何在不使用 TestServer 的情况下与集成测试并行运行 kestrel,或者在这种情况下有没有办法利用 TestServer?


我认为这里的任何代码都没有任何用处,但到目前为止我得到的如下。


启动文件


public class Startup

{

    public Startup(IConfiguration configuration)

    {

        Configuration = configuration;

    }


    public IConfiguration Configuration { get; }


    public void ConfigureServices(IServiceCollection services)

    {

        services.AddTransient<IPaymentService>(service => new Services.PaymentService());

        services.AddMvc();

    }


    public void Configure(IApplicationBuilder app, IHostingEnvironment env)

    {

        if (env.IsDevelopment())

        {

            app.UseDeveloperExceptionPage();

        }


        app.UseSoapEndpoint<IPaymentService>("/PaymentService.svc", new BasicHttpBinding());

        app.UseMvc();

    }

}

支付服务


[ServiceContract]

public interface IPaymentService

{

    [OperationContract]

    string ReadPaymentFiles(string caller);

}


 public class PaymentService : IPaymentService

{

    public string ReadPaymentFiles(string caller)

    {

        return caller;

    }

}

我的测试之一:


public void Should_Get_Soap_Response_From_PaymentService()

    {

        var testServerFixture = new TestServerFixture();

        var binding = new BasicHttpBinding();

        var endpoint = new EndpointAddress(new Uri("http://localhost:5000/PaymentService.svc"));

        var channelFactory = new ChannelFactory<IPaymentService>(binding, endpoint);


        var serviceClient = channelFactory.CreateChannel();

        var response = serviceClient.ReadPaymentFiles("Ping");

        channelFactory.Close();

    }

该测试现在没有做任何事情,因为它没有调用任何实时端点,这是我的问题......


MM们
浏览 151回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP