【发布时间】: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);
}```
【问题讨论】: