为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
MM们 2021-07-08 14:01:56
我正在使用 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();    }该测试现在没有做任何事情,因为它没有调用任何实时端点,这是我的问题......
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 150 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信