DBa*_*nkx 1 c# json.net asp.net-web-api .net-core
我目前正处于项目的集成测试阶段,在尝试测试端点以查看我的数据库是否返回某些任务时遇到错误。我的域对象如下所示:
public class Task
{
public Guid Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
[Column(TypeName = "decimal(18,2)")]
public decimal? InitialPrice { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的端点的基本测试代码
[Fact]
public async Task Should_return_All_Tasks_with_ok_statusCode()
{
client.SetFakeBearerToken((object) token);
var response = await client.GetAsync("/api/v1/tasks");
response.StatusCode.Should().Be(HttpStatusCode.OK);
var json = await response.Content.ReadAsStringAsync();
var data = JsonConvert.DeserializeObject<List<Task>>(json);
data.Count.Should().BeGreaterThan(0);
}
Run Code Online (Sandbox Code Playgroud)
当我运行测试时出现错误
Newtonsoft.Json.JsonReaderException: Could not convert string to integer: 64fa643f-2d35-46e7-b3f8-31fa673d719b. Path '[0].id', line 1, position 45.
Run Code Online (Sandbox Code Playgroud)
我还尝试使用 webapi.client 包中的 ReadAsAsync<List>() 方法,但仍然遇到相同的错误。
对我尝试测试的端点的 api 调用将给出:
[
{
"id": "64fa643f-2d35-46e7-b3f8-31fa673d719b",
"title": "Garden Trimming in Lagos Ajah",
"description": "Please my garden needs trimmin, Im in lagos",
"initialPrice": 20.3
}
]
Run Code Online (Sandbox Code Playgroud)
我将不胜感激
您将Task
类命名为System.Threading.Tasks.Task
与 .Net 框架中的对象相同的名称。该System.Threading.Tasks.Task
有一个int
ID属性。您要反序列化的代码实际上是试图将您的 JSON 反序列化为System.Threading.Tasks.Task
对象。
要解决此问题,您需要重命名您的Task
类(我建议这样做),或者Task
在调用JsonConvert.DeserializeObject
.
归档时间: |
|
查看次数: |
232 次 |
最近记录: |