【问题标题】:API tests : No connection could be made because the target machine actively refused itAPI 测试:无法建立连接,因为目标机器主动拒绝它
【发布时间】:2020-09-07 15:39:54
【问题描述】:

所以我正在学习 C# 和 api 测试。我有一些测试正在运行,但他们现在已经完全停止工作,出现以下错误。什么也没有变。有任何想法吗?完全卡住了。尝试清洁解决方案和重建。它刚刚停止工作

消息: System.AggregateException :发生一个或多个错误。 (由于目标机器主动拒绝,无法建立连接。) ----> System.Net.Http.HttpRequestException : 由于目标机器主动拒绝,无法建立连接。 ----> System.Net.Sockets.SocketException : 由于目标机器主动拒绝,无法建立连接。 堆栈跟踪: Task.ThrowIfExceptional(布尔型 includeTaskCanceledExceptions) 任务1.GetResultCore(Boolean waitCompletionNotification) Task1.get_Result() ComponentTests.WhenARequestIsMadeToCreateTheTodoItem() 第 57 行 ComponentTests.CanCreateTodoItem() 第 37 行 --HttpRequestException ConnectHelper.ConnectAsync(字符串主机,Int32 端口,CancellationToken cancelToken) HttpConnectionPool.ConnectAsync(HttpRequestMessage请求,布尔allowHttp2,CancellationToken cancelToken) HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage 请求,CancellationToken cancelToken) HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage 请求,CancellationToken cancelToken) HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage 请求,布尔型 doRequestAuth,CancellationToken 取消令牌) RedirectHandler.SendAsync(HttpRequestMessage 请求,CancellationToken cancelToken) HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage 请求, CancellationTokenSource cts, Boolean disposeCts) --套接字异常 ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancelToken)

using Microsoft.CodeAnalysis.CSharp;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using TodoApi.Models;

namespace TodoApi.Tests
{
    public class ComponentTests
    {
        private HttpClient client;
        private TodoItem todoItem;
        private HttpResponseMessage response;
        //private APIItems deserializedString;

        public ComponentTests()
        {
            this.client = new HttpClient();
        }





        [Test]
        public void CanCreateTodoItem()
        {
            string[] Names = {"Walk dog"};

            foreach (string nameValue in Names)
            {
                GivenATodoItem(nameValue);
                WhenARequestIsMadeToCreateTheTodoItem();
                ThenResponseStatusCodeIs(HttpStatusCode.Created);
            }
        }

        private void GivenATodoItem(string nameValue)
        {
                this.todoItem = new TodoItem
                {
                    Id = "g24c34a7-68d0-4f46-b3fe-9aa75127387a",
                    Name = nameValue,
                    IsComplete = true
                };
            
        }

        private void WhenARequestIsMadeToCreateTheTodoItem()
        {


            response = this.client.PostAsync(
                "https://localhost:44387/api/todoitems",
                new StringContent(
                    JsonConvert.SerializeObject(todoItem),
                    System.Text.Encoding.UTF8,
                    "application/json")).Result;

        }

        private void ThenResponseStatusCodeIs(HttpStatusCode expectedStatusCode)
        {
            Assert.That(this.response.StatusCode, Is.EqualTo(expectedStatusCode));
            Console.WriteLine(this.response.StatusCode + " Matches expected " + expectedStatusCode);
        }```

【问题讨论】:

    标签: json api json.net nunit


    【解决方案1】:

    您是否尝试使用 Blazor 和 Visual Studio 访问 API?在这种情况下,您只需将 StartUp Project 默认值从 SINGLE 更改为 MULTIPLE。右键单击您的解决方案、属性、启动项目,然后确保将您的 API 项目包含为“启动”以及您的默认项目。

    【讨论】:

      猜你喜欢
      • 2011-08-24
      • 2023-03-25
      • 2015-04-05
      • 2016-12-08
      • 2014-09-05
      • 2017-06-01
      • 2016-08-10
      • 1970-01-01
      相关资源
      最近更新 更多