📅  最后修改于: 2023-12-03 15:18:33.347000             🧑  作者: Mango
PHPUnit是一个常用的PHP单元测试框架,提供了许多方便程序员编写单元测试的函数。其中一个函数是assertNotContainsOnly()函数。
assertNotContainsOnly()函数用于判断一个数组或迭代器中是否存在不是指定类的对象。如果存在,则测试通过;否则,测试失败。
函数原型:assertNotContainsOnly(string $type, iterable $haystack [, bool $isNativeType = null [, string $message = '']])
参数解释:
$type
: 指定的类名。可以是字符串,也可以是类的实际对象。$haystack
: 被检查的数组或迭代器。$isNativeType
: 是否为基本类型。默认值为null,表示不是基本类型。$message
: 断言失败时的提示信息。假设我们有以下的类:
class Foo {
public $name = 'Foo';
}
class Bar {
public $name = 'Bar';
}
然后我们创建一个数组:
$data = [
new Foo(),
new Foo(),
new Bar(),
];
我们要测试这个数组中是否存在不是Foo类的对象,可以使用assertNotContainsOnly()函数:
$this->assertNotContainsOnly(Foo::class, $data);
这个断言应该会成功,因为这个数组中还有一个Bar对象。如果我们把数据改成这样:
$data = [
new Foo(),
new Foo(),
];
则这个断言将会失败,因为这个数组中只包含了Foo对象,不存在其他类的对象。
我们也可以在代码中使用类的实际对象代替类名:
$foo = new Foo();
$data = [
$foo,
new Foo(),
];
$this->assertNotContainsOnly($foo, $data);
同样的,这个断言也应该会成功。
$type
参数可以是字符串,也可以是类的实际对象。如果是类的实际对象,则类型判断会使用其类名。$isNativeType
参数为true,则表示$type
参数为基本类型。$haystack
参数是空的数组或迭代器,则这个断言总是会失败。