gpt4 book ai didi

c# - 是否使用 TDD 进行构造函数注入(inject)?

转载 作者:行者123 更新时间:2023-11-30 17:23:33 25 4
gpt4 key购买 nike

我有一个方法正在尝试使用查询对象进行单元测试,我想为我的单元测试 stub 这个查询对象。此查询对象确实具有依赖项 (UnitOfWork)。我正在使用 IOC/DI 容器在应用程序中实例化我的对象。但是我不想在 TDD 时使用容器。我的看法是我有 2 个选择:

  1. 将查询对象作为字段或属性添加到方法的类中,并将其作为 ctor 参数注入(inject)。然而,这感觉不对,因为这个 1 方法是只有一个方法会使用它,如果我确实需要添加第二个使用此查询对象的方法,则必须在每次使用后重新实例化或重置该对象。
  2. 将查询对象添加到方法的签名中。气味?

还有其他选择或模式吗?还是我处理方法不对?

这是一些伪代码:

选项#1

public class OrdersController
{
public OrdersController(IOrderQuery query)
{
this.query = query;
}

private readonly IOrderQuery query;

public Queryable<Order> OrdersWaiting()
{
var results = query(...);
...
}
}

选项#2

public class OrdersController
{
public Queryable<Order> OrdersWaiting(IOrderQuery query)
{
var results = query(...);
...
}
}

还有我的查询对象

public class OrderQuery : IOrderQuery
{
public OrderQuery(IUnitOfWork unitOfWork)
{
...
}
}

最佳答案

if I did ever have to add a second method that did use this query object, the object would have to be re-instantiated or Reset after each use.

如果这是阻止您在此处使用构造函数注入(inject)的原因,请考虑注入(inject) IOrderQueryFactory

关于c# - 是否使用 TDD 进行构造函数注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2120212/

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