【发布时间】:2011-01-09 18:23:25
【问题描述】:
所以我和一位同事正在进行一场相当激烈的辩论。我们正在开始一个新项目,我们正在尝试使用 BDD。我们都是新手,并不完全了解应该使用哪些做法。我们已经编写了一些规范,现在正在实施代码。由于有很多数据库交互,事情变得非常棘手。我们被困在如何模拟我们的数据上。我们正在使用的方法需要我们模拟我们的方法而不是我们的数据。如果我用代码告诉你,那是最简单的......
public static void AssignLeadToDistributor(int leadId, int distributorId)
{
Lead lead = GetById(leadId);
lead.DistributorId = distributorId;
Save(lead);
}
基本上,我们必须重写 GetById() 和 Save() 以返回模拟数据以供我们测试。 这样做似乎更有意义:
public static void AssignLeadToDistributor(Lead lead, Distributor distributor)
{
lead.DistributorId = distirbutor.Id;
}
然后我们就可以模拟我们的对象了。
显然第二种方法更容易测试。然而,争论是我们不希望在前端代码中获取新的潜在客户和分销商对象,因为只传递对象的 id 会更容易。减少我们前端的实际代码。
希望我解释得足够好。
你们怎么看?哪种方式更有意义?
【问题讨论】:
-
嗯,当然,二元决策图很棒,但它们并不是最后一代的东西,它会让我们所知道的一切都过时......哦,等等,没关系。
标签: unit-testing tdd mocking bdd specifications