我和我的同事正在进行一场激烈的争论。我们开始了一个新项目,试图使用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会更容易。这样可以减少前端代码量。
希望我解释得足够清楚。
你们认为哪种方式更有意义呢?