-1

我有一些代码如下:

在支付控制器中:

[HttpPost]
public void GeneratePaymentData(IList<int> paymentIds)
{
  string paymentSummaryFileName;

  var results = _paymentsPort.GetPaymentData(paymentIds, out paymentSummaryFileName);

  _fileUtilities.SaveToFile(results, _appSettings.paymentFileSaveLocation, paymentSummaryFileName);
}

所以它的作用是关闭并获取一些支付数据并通过 out 参数返回要保存到的文件的名称。然后它将数据保存到文件中。

一位同事告诉我,我在这里所做的事情非常糟糕。他的理由是我的代码有可能让控制器给保存方法提供错误的文件名。

我不同意这一点,因为我有单元测试来确保 out 参数中的文件名与传递给 SaveToFile 的文件名相同。

他建议我在 GetPaymentData 中进行保存。

我不同意这一点,因为我认为单元测试会更难。目前很容易测试从 GetPaymentData 返回的内容是否正确,但如果此方法没有返回数据而只是将其保存到文件中,这将更加困难。

谁是对的?这只是风格不同的问题,还是这里肯定有人错了?

4

1 回答 1

1

您编写了自己的单元测试,因此您倾向于在测试和生产代码中做出相同的错误假设。单元测试不是圣杯,它是达到目的的手段。

解决讨论的一种方法:请您的同事编写一个使用您的方法但失败的单元测试。你们都会从中吸取教训。

于 2013-05-23T20:36:11.650 回答