我正在为我正在开发的应用程序的一个新模块寻找一些设计建议,特别是关于如何使设计可测试。
这个问题很常见——从数据库中加载一些数据,对数据运行一些操作,然后将结果保存到数据库中。应用程序中的大多数其他模块具有以下模式:
private repo; //Set in constructor
public void Run()
{
Stuff stuff = repo.LoadStuff()
Result result = RunOperationsInPrivateMethod(stuff); //private method
repo.SaveResult(result);
}
所以为了测试这个,我发现我有几个选择:
- 注入一个模拟仓库,我可以用它来返回一个东西并验证一个结果。
- 重构 RunOperationsInPrivateMethod 以保护访问,并直接测试操作。
我错过了任何其他选择吗?人们的喜好是什么?