gpt4 book ai didi

c# - 验证在单元测试中失败

转载 作者:太空狗 更新时间:2023-10-29 17:34:06 25 4
gpt4 key购买 nike

我正在运行我的 PostMyModel 的单元测试路线。但是,在 PostMyModel() 内我使用了 Validate<MyModel>(model) 行更改后重新验证我的模型。我正在使用测试上下文,以免单元测试依赖于数据库。我已经在下面发布了测试上下文和发布方法:

测试环境

class TestAppContext : APIContextInterface
{

public DbSet<MyModel> MyModel { get; set; }

public TestAppContext()
{
this.MyModels = new TestMyModelDbSet();
}

public int SaveChanges(){
return 0;
}
public void MarkAsModified(Object item) {

}

public void Dispose() { }

}

发布方法

[Route(""), ResponseType(typeof(MyModel))]
public IHttpActionResult PostMyModel(MyModel model)
{
//Save model in DB
model.status = "Waiting";
ModelState.Clear();
Validate<MyModel>(model);

if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}

db.MyModels.Add(model);

try
{
db.SaveChanges();
}
catch (DbUpdateException)
{
if (MyModelExists(model.id))
{
return Conflict();
}
else
{
throw;
}
}

return CreatedAtRoute("DisplayMyModel", new { id = model.id }, model);
}

Validate<MyModel>(model)行运行,我得到错误:

System.InvalidOperationException: ApiController.Configuration must not be null.

我该如何纠正这个问题?

最佳答案

为了运行 Validate 命令,必须有与 Controller 关联的模拟 HttpRequest。执行此操作的代码如下。这将模拟默认的 HttpRequest,在这种情况下几乎没有使用它,从而允许对该方法进行单元测试。

 HttpConfiguration configuration = new HttpConfiguration();
HttpRequestMessage request = new HttpRequestMessage();
controller.Request = request;
controller.Request.Properties["MS_HttpConfiguration"] = configuration;

关于c# - 验证在单元测试中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28753206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com