你不能真的在那个特定的方法中测试。
测试归结为编写调用您的生产代码的函数测试代码。在这里,你会写一行来调用这个静态方法。
然后测试会检查预期的返回值是否真的返回。就你而言,你展示的功能绝对没有办法做一些奇特的事情。它将接受你作为参数传递的数组,从中获取一些值,用这些值创建一个Response
对象,并返回它。
从这个类的外部,在你的测试中,你只能改变你传递给函数的数组,而你的期望是总是得到一个类Response
的对象。我们看不到你传递的参数是否会到达某个位置,如果你能检测它们是否正确传递,但@gontrollez认为这可以通过检查一些公共属性来完成(他可能是错的,他也不知道你的代码)。
所以写测试就像是你用你自己的生产代码中的第一次。假定你想写一个邮件地址验证器。简单的说,用一个字符串(邮件地址)调用一个函数,然后返回真实的地址,否则返回false。
你会通过编写调用验证与几个工作电子邮件地址,并希望作为返回值,而应返回false几个无效的字符串真正的测试代码测试功能。
与您的代码你给我的问题:这是很难深入测试。它不允许对所有方面进行简单的测试,只是因为测试应该检查返回对象的类。测试细节会变得混乱。
所以,除了你在测试业务的初学者,你也选择了一个硬目标。我可以理解你很困惑。
此外,您不能测试该数组是否具有所需的键。因为这必须发生在您的生产代码中,并且它被称为验证。如果你在你的静态函数中编写代码来检查数组键值,如果它们不在那里(抛出一个异常)会失败,那么你的测试可以检查是否真的抛出异常,如果你不能传递所有的数组键值,如果一切正确,你会得到一个Response对象。
那么这是非常广泛和基于意见的问题。在我看来,100%的代码覆盖率并不那么重要。例如,在测试简单的getter和setter时没有意义,您想要测试代码的哪些部分存在或可能会出现错误。对于这个例子来说,测试这个数组需要的键并不是真的有意义 - array是你的输入,你应该检查你的响应对象是否与输入有关。 – Mikk