gpt4 book ai didi

c# - HttpResponseMessage 包含所需响应的单元测试

转载 作者:IT王子 更新时间:2023-10-29 04:47:36 26 4
gpt4 key购买 nike

我正在编写一个 Web API Controller ,现在我有以下代码:

public class PicklistsController : ApiController
{
private readonly IPicklistRepository _repository;

public PicklistsController(IPicklistRepository repository)
{
_repository = repository;
}

public HttpResponseMessage GetPicklistValues(string entityName, string fieldName)
{
if(_repository.Exists(entityName, fieldName))
return Request.CreateResponse(HttpStatusCode.Accepted, _repository.Get(entityName, fieldName));

return new HttpResponseMessage(HttpStatusCode.NotFound);
}

}

我正在尝试测试此方法,而我真正想做的就是在存储库找到此值组合时验证 HttpResponseMessage 是否包含 POCO PicklistItem 中的值。作为这个框架的新手,我不太了解 HttpResponseMessage 的内部工作原理,我在这个网站上发现的以及通过一般谷歌搜索告诉我在其内容上使用各种 ReadAsync 方法,但我真的不想如果我可以避免,请使用异步。我真的只是想验证我塞进我要返回的对象的东西在我返回它时是否在对象中。这是我到目前为止的单元测试(使用 JustMock 设置存储库,Target 是 CUT):

public void Returns_Picklist_Item_JSON_When_Results_Exist()
{
Repository.Arrange(repo => repo.Exists(EntityName, FieldName)).Returns(true);

const int value = 2;
const string label = "asdf";
var mynewPicklistItem = new PicklistItem() { Label = label, Value = value };
Repository.Arrange(repo => repo.Get(EntityName, FieldName)).Returns(Enumerable.Repeat<PicklistItem>(mynewPicklistItem, 1));

var response = Target.GetPicklistValues(EntityName, FieldName);
//Assert.IsTrue(I don't know what to do here -- suggestions appreciated);
}

对 Assert 有什么想法吗?还是我找错了树/从根本上误解了它应该如何工作?谢谢...

最佳答案

我正在使用 Web API 2.1,并且有一个名为 TryGetContentValue 的函数:

[Test]
public void TheTestMethod()
{
// arrange

var ctrl = new MyController();

ctrl.Request = Substitute.For<HttpRequestMessage>(); // using nSubstitute
ctrl.Configuration = Substitute.For<HttpConfiguration>();

// act

HttpResponseMessage result = ctrl.Get();

MyResponse typedresult;
result.TryGetContentValue(out typedresult); // <= this one

// assert
}

关于c# - HttpResponseMessage 包含所需响应的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14617353/

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