C# 未找到字段:';Microsoft.EntityFrameworkCore.Metadata.Internal.EntityMaterializerSource.ThroWareAdvalueExceptionMethod';
我正试图通过NUnit对我的WebApi控制器进行集成测试,但出现以下错误: 未找到字段:“Microsoft.EntityFrameworkCore.Metadata.Internal.EntityMaterializerSource.ThrorOveralueExceptionMethod” 当我从实体框架调用这一行时,错误正好发生:C# 未找到字段:';Microsoft.EntityFrameworkCore.Metadata.Internal.EntityMaterializerSource.ThroWareAdvalueExceptionMethod';,c#,unit-testing,asp.net-web-api,entity-framework-core,asp.net-core-webapi,C#,Unit Testing,Asp.net Web Api,Entity Framework Core,Asp.net Core Webapi,我正试图通过NUnit对我的WebApi控制器进行集成测试,但出现以下错误: 未找到字段:“Microsoft.EntityFrameworkCore.Metadata.Internal.EntityMaterializerSource.ThrorOveralueExceptionMethod” 当我从实体框架调用这一行时,错误正好发生: await base.SaveChangesAsync(true, cancellationToken); 有趣的是,当我直接(在localhost中)测试
await base.SaveChangesAsync(true, cancellationToken);
有趣的是,当我直接(在localhost中)测试api时,我没有出现这个错误,只有当我从Nunit测试它时
这是我的测试类中的代码:
[Test]
public async Task PutAusschreibungen_WhenCalled_ReturnAddedAusschreibendeStellen()
{
Guid id = Guid.NewGuid();
AusschreibungDto ausschreibungDto = new AusschreibungDto
{
Id = id,
Nr = 0,
Status = "Test",
Quelle = new QuelleDto
{
Id = Guid.NewGuid(),
Name = "QuelleTest",
EingangTyp = EingangTyp.Email
}
};
IActionResult result = await _ausschreibungenController.PostAusschreibung(It.IsAny<string>(), ausschreibungDto);
Assert.That(result, Is.TypeOf<CreatedAtActionResult>());
}
[测试]
公共异步任务PutAusschreibungen_当调用时_ReturnAddedAusschreibendeStellen()
{
Guid id=Guid.NewGuid();
AusschreibungDto AusschreibungDto=新AusschreibungDto
{
Id=Id,
Nr=0,
Status=“Test”,
Quelle=新的QuelleDto
{
Id=Guid.NewGuid(),
Name=“QuelleTest”,
EingangTyp=EingangTyp.Email
}
};
IActionResult=await_ausschreibungenController.postauschreibung(It.IsAny(),ausschreibungDto);
Assert.That(result,Is.TypeOf());
}
这是我的控制器的代码:
[HttpPost]
public async Task<IActionResult> PostAusschreibung(string dbType, [FromBody] AusschreibungDto ausschreibungDto)
{
//if (!ModelState.IsValid)
//{
// return new BadRequestObjectResult(ModelState);
//}
//Not neccesary because ControllerBase makes Validation automatically
using (IUnitOfWork uow = _uowF(dbType))
{
Ausschreibung ausschreibung = _mapper.Map<AusschreibungDto, Ausschreibung>(ausschreibungDto);
uow.Ausschreibungen.Add(ausschreibung);
try
{
await uow.CompleteAsync();
}
catch (DbUpdateException ex)
{
return StatusCode(500, ex.ToString());
}
AusschreibungDto result = _mapper.Map<Ausschreibung, AusschreibungDto>(ausschreibung);
return CreatedAtAction("GetAusschreibung", new {dbType, nr = result.Nr},
"Der Ausschreibung-Einträge wurde erfolgreich in die Datenbank aufgenommen.");
}
}
[HttpPost]
公共异步任务PostAusschreibung(字符串dbType,[FromBody]AusschreibungDto AusschreibungDto)
{
//如果(!ModelState.IsValid)
//{
//返回新的BadRequestObjectResult(ModelState);
//}
//不必要,因为ControllerBase会自动进行验证
使用(IUnitOfWork uow=\U uowF(dbType))
{
Ausschreibung Ausschreibung=\u mapper.Map(ausschreibungDto);
uow.Ausschreibungen.Add(ausschreibung);
尝试
{
等待uow.CompleteAsync();
}
捕获(DbUpdateException ex)
{
返回状态代码(500,例如ToString());
}
AusschreibungDto结果=_mapper.Map(ausschreibung);
返回CreateDataAction(“GetAusschreibung”,new{dbType,nr=result.nr},
“在Datenbank aufgenommen的一本书中,他写了一篇关于乌尔德·奥尔格里希的文章。”);
}
}
我使用的是AspNet核心2.1.0和实体框架核心2.1.1
任何帮助都将不胜感激 是否有任何演示来重现您的问题?是否有任何演示来重现您的问题?