所以我对测试很陌生,虽然它对我来说很有意义,但有些事情感觉不对。
例如:使用相当多的模拟测试方法是否可以接受?
具体来说,我正在测试我的服务层,它有一个预订日期的方法。 有很多合理性检查,所以看起来有点像这样: (不是实际代码)
public bool BookDate(Person person, int dateId, MyRoom room...)
{
var date = this.dateRepo.Get(dateId)
if (date == null) return false
if (!this.personService.Get(person.id)) return false;
if (!this.personService.IsValidPerson(person)) return false;
... more validations
}
因此,该方法必须进行验证,而这些验证依赖于当然提供的数据(如果它们本身不是接口)。测试不同的案例意味着嘲笑很多。
另外,我经常不得不重复模拟以传递验证并得到我想要测试的实际内容(例如,在方法的下方,传递大量的if)
如何更轻松地测试? 我可以将方法拆分为子方法,但是再次,模拟那些我必须在我的界面中公开它们,尽管它们本身对其他类没用。