在我目前的项目中,我执行行为驱动开发。
该应用有一个表格视图。我有一个UITableViewController
子类和NSObject
上的子类作为数据源和表视图的委托。
表视图的数据源(和委托)被设置为表视图控制器的属性,并将其设置为viewDidLoad
中表视图的数据源和委托。
在TDD中,我将测试表视图数据源和委托是否与表视图控制器的属性设置相同。另外我会测试数据源。但在BDD中,我的印象是,这是规范中的许多内部信息。
在BDD中,我宁愿测试表视图的内容。但这意味着我必须立即在测试中设置两个被测对象。表视图控制器和表视图的委托。这似乎是错误的,因为这使得测试再次依赖于内部实现。
我不想让表视图控制器来定义表视图的数据源,因为我想在同一个应用程序中为不同的表视图重用它。
任何想法如何"应该"在BDD完成?
答案 0 :(得分:0)
BDD代表行为驱动开发。这需要考虑并描述在进行开发之前的行为。在这种情况下,您已经完成了开发,所以当然您发现很难做BDD
一旦你已经获得了代码并试图“测试”它,那么你就不会做BDD或TDD了。
您可以通过假装没有编写视图来进行BDD的思考实验。然后编写一个场景,描述为什么需要这个特定的视图(即它给出了什么商业价值)以及你可以用它做什么......
或者只为您编写的代码编写单元测试