【发布时间】:2021-09-25 10:18:18
【问题描述】:
我有以下方法:
MyClass {
public function __construct(array $data, ?SomeObject $object): void
}
我有以下测试:
public function testWrongDataTypeThrowsErrorException(): void
{
$this->expectException(TypeError::class);
//works as expected
new MyClass(null, new SomeObject);
//this is never called
new MyClass('string', new SomeObject);
}
发生的情况是它只使用 null 参数运行 1 个测试/断言。第二次尝试使用字符串创建 MyClass 时,它永远不会到达那里。这是为什么呢?
如果代码抛出常规异常,同样的逻辑会起作用。
我可以写 2 个单独的方法来代替,但这很不方便。
或者测试这个是愚蠢的吗?我的想法是我想测试该方法是否接受数组并且只接受数组。因此,如果有人将其从方法中删除,则测试将失败。
【问题讨论】:
标签: php unit-testing testing phpunit