现在是一些看似简单的问题的时候了,我似乎无法找到答案。
我正在使用TDD(PHP)开发一个库。根据我的理解,当使用TDD时,如果没有首先编写失败的测试来保证它,就不应该编写任何生产代码。
我有一个mutator方法,它将数据附加到具有私有可见性的数组中。我应该怎么测试?我应该只测试各种存取器吗?访问者的测试是否应该包括mutator方法?
测试是否可以测试访问者和变种者,或者这些是否应该是单独的测试?
我的库需要一个依赖项,我将通过构造函数注入。什么测试代码可能会提示我编写构造函数代码?
很抱歉这些无聊的问题。我一直在研究TDD,并且认为我已经弄明白了,但是一旦我尝试使用它,所有这些小问题都浮现在脑海中。显然,我想确保这一点,我有效地实施它并尽我所知。
也许我太严格了?也许使用模拟隐式测试注入并检查使用注入类的方法的期望?
我理解这些问题可能是主观的,答案可能基于人们的意见,但我对此很好。我只想以一种有意义且有效的方式开始。
非常感谢提前。
答案 0 :(得分:1)
我会一起测试setter和getter方法,因为这是迄今为止最简单的方法,而不必更改数组的可见性,这是你不应该做的。您的注入类将通过这些测试隐式测试。
一般情况下,尝试从另一个试图使用您的测试类的用户的角度编写单元测试。你需要思考,这个类应该做什么或者它的契约是什么(即这个类包含用户可以添加和删除的对象数组),然后编写测试以确保它满足该合同。之后,编写足够的代码以使测试通过。