gpt4 book ai didi

c# - 在类中为 Nunit 测试设置私有(private)变量

转载 作者:行者123 更新时间:2023-11-30 21:31:06 25 4
gpt4 key购买 nike

我正在尝试为一个类编写单元测试,但该类有一个在创建类时启动的私有(private)变量..

public class OrderFormService : IOrderFormService
{
private readonly IOrderItems _orderItems;
private readonly string _orderStartingGroup;

// constructor
public OrderFormService(IOrderItems orderItems)
{
_orderItems = orderItems;
_orderStartingGroup = "Sales";
{

// Other Methods

}

我正在尝试编写一个单元测试并测试此类中的一个方法,它使用变量 _orderStartingGroup...

[TestFixture]
public class OrderFormServiceTests
{
private ITreatmentFormService _service;
private Mock<IOrderItems> _orderItems;

[SetUp]
public void SetUp()
{
_orderItems = new Mock<IOrderItems>();
_service = new OrderFormService(_orderItems);
}
}

是否可以在 OrderFormServiceTest 中设置 _orderStartingGroup,以便在单元测试中使用它来测试 OrderFormService 中的某些方法?如果是这样,我该怎么做?我试过用谷歌搜索它,但结果一直在谈论访问你正在测试的类中的私有(private)变量,但这不是我想要做的。

提前致谢:)

最佳答案

好吧,即使一种直接从单元测试方法设置私有(private)字段的方法,它也会破坏一两个架构原则..

有几种方法可以解决这个问题。最简单的解决方案是通过添加可选参数来更改构造函数签名:

// constructor
public OrderFormService(IOrderItems orderItems, string orderStartingGroup = null)
{
_orderItems = orderItems;
_orderStartingGroup = orderStartingGroup ?? "Sales";
{

并在单元测试中使用它:

[SetUp]
public void SetUp()
{
_orderItems = new Mock<IOrderItems>();
_service = new OrderFormService(_orderItems, “testValue”);
}

关于c# - 在类中为 Nunit 测试设置私有(private)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53696901/

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