TDD:构造函数注入和Mutator测试

时间:2014-01-06 09:51:34

标签: php unit-testing dependency-injection tdd

现在是一些看似简单的问题的时候了,我似乎无法找到答案。

我正在使用TDD(PHP)开发一个库。根据我的理解,当使用TDD时,如果没有首先编写失败的测试来保证它,就不应该编写任何生产代码

  1. 我有一个mutator方法,它将数据附加到具有私有可见性的数组中。我应该怎么测试?我应该只测试各种存取器吗?访问者的测试是否应该包括mutator方法?

  2. 测试是否可以测试访问者和变种者,或者这些是否应该是单独的测试?

  3. 我的库需要一个依赖项,我将通过构造函数注入。什么测试代码可能会提示我编写构造函数代码?

  4. 很抱歉这些无聊的问题。我一直在研究TDD,并且认为我已经弄明白了,但是一旦我尝试使用它,所有这些小问题都浮现在脑海中。显然,我想确保这一点,我有效地实施它并尽我所知。

    也许我太严格了?也许使用模拟隐式测试注入并检查使用注入类的方法的期望?

    我理解这些问题可能是主观的,答案可能基于人们的意见,但我对此很好。我只想以一种有意义且有效的方式开始。

    非常感谢提前。

1 个答案:

答案 0 :(得分:1)

我会一起测试setter和getter方法,因为这是迄今为止最简单的方法,而不必更改数组的可见性,这是​​你不应该做的。您的注入类将通过这些测试隐式测试。

一般情况下,尝试从另一个试图使用您的测试类的用户的角度编写单元测试。你需要思考,这个类应该做什么或者它的契约是什么(即这个类包含用户可以添加和删除的对象数组),然后编写测试以确保它满足该合同。之后,编写足够的代码以使测试通过。