gpt4 book ai didi

c# - 你会如何测试它?有多少测试?

转载 作者:太空宇宙 更新时间:2023-11-03 20:16:55 25 4
gpt4 key购买 nike

我有这个类(更多的是伪代码)


public class Roles
{
private ProcessData processData;

Roles(ProcessData pd)
{
processData = pd;
}

public string[] GetLoginsThatCanCallAction(string actionName)
{
return GetPeopleThatCanCallActionFromDb(actionName)
.Union(processData.ProcessOwner)
.Union(GetFromDb(Role.Administrators);
// there may be many more Union(xyz) calls here
.ToArray();
}

// I can refactor those methods to be mockable
private GetPeopleThatCanCallActionFromDb(...)
private GetFromDb(...)
}

现在我的问题是。您会为 GetLoginsThaatCanRunAction 方法中的每个 Union 调用编写一个测试吗?或者这足以让我编写一个测试并断言该方法返回从 GetLoginsThatCanCallAction 内部调用的所有方法返回的登录信息。

我可以看到双管齐下的理由。但也许有人会说服我继续或其他解决方案。

编辑:我想我的问题不清楚:我想问你是否会写这个测试


var pd = new ProcessData()
pd.ProcessOwner = "Owner";
var r = new Roles(processData)
SetupSoThatCallsForPeopleThatCanCallActionWillReturn("Joe");
SetupSoThatCallForAdministratorsWillReturn("Administrator");

var logins = r.GetLoginsThatCanCallAction("some action");

Assert.That(logins, Contains("Owner");
Assert.That(logins, Contains("Joe");
Assert.That(logins, Contains("Administrator");

或者您会把它分成 3 个单独的测试,每个测试有一个断言吗?

最佳答案

有趣的话题,你的问题是你在开发了一些代码后试图编写一个测试用例。我会为每个 Union 电话进行 1 次测试。原因是您想测试您是否从所有方法中获得返回值,或者您是否想测试在不同的假设下每个方法都会返回登录?

对我来说,知道每个方法都会根据不同的用例返回登录名比让我返回通过/失败的通用测试更重要。

我希望这是有道理的。

关于c# - 你会如何测试它?有多少测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16113664/

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