gpt4 book ai didi

C# 异步任务 - 单元测试

转载 作者:太空宇宙 更新时间:2023-11-03 22:36:07 26 4
gpt4 key购买 nike

我是 C# 单元测试的新手,必须测试方法是否正常工作。

这是我目前所拥有的:

  public async Task<IHttpActionResult> Post(API_FIRM_LINK aPI_FIRM_LINK)
{
db.API_FIRM_LINK.Add(aPI_FIRM_LINK);
await db.SaveChangesAsync();

return Created(aPI_FIRM_LINK);
}

测试方法:不确定我是否在正确的道路上如果有人可以根据我的测试提供一个例子

     public async Task PostTest()

{
////Arrange
API_FIRM_LINKController controller = new API_FIRM_LINKController();

API_FIRM_LINK aPI_FIRM_LINK = null;

IHttpActionResult expectedResult = await controller.Post(aPI_FIRM_LINK);
//act

IHttpActionResult result = await controller.Post(API_FIRM_LINK, aPI_FIRM_LINK);


////Assert
IComparer<IHttpActionResult> comparer = new IHttpActionResultComparer();
// Assert.IsTrue(comparer.Equals(expectedResult, result));

Assert.IsNotNull(result);
Console.Write(result);

最佳答案

如果您使用现代版本的 Microsoft.VisualStudio.TestTools.UnitTesting,您可以使用异步测试方法,就像您在问题中所做的那样。

如果您想测试您的 Post 函数是否返回预期数据,请执行以下操作:

[TestMethod()]
public async Task PostTestAsync()
{
var controller = new API_FIRM_LINKController();
// TODO: do some preparations, so you can expect a specific return value
IHttpActionResult expectedResult = ...

// call PostAsync and await for it to finish
Task taskPost = controller.PostAsync(API_FIRM_LINK, aPI_FIRM_LINK);
IHttpActionResult result = await taskPost;

// of course this can be done in one line:
IHttpActionResult result = await controller.PostAsync(API_FIRM_LINK, aPI_FIRM_LINK);

// compare whether result equals expectedResult
// for example: create a class that implements IComparer<IHttpActionResult>
IComparer<IHttpActionResult> comparer = new IHttpActionResultComparer();
Assert.IsTrue(comparer.Equals(expectedResult, result);
}

如果您使用无法使用异步测试的测试套件:

[TestMethod()]
public void PostTest()
{
var controller = new API_FIRM_LINKController();
IHttpActionResult expectedResult = ...

// call PostAsync and wait for it to finish
Task taskPost = Task.Run(() => controller.PostAsync(API_FIRM_LINK, aPI_FIRM_LINK));
taskPost.Wait();
IHttpActionResult result = taskPost.Result;

// TODO: compare result with expected result
}

关于C# 异步任务 - 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55107238/

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