php - 我如何在 PHPUnit 中断言 InstanceOf()?

标签 php unit-testing testing phpunit

我已经为单元测试编写了这段代码:

<?php

namespace tests;

use data\address\Address;
use lists\Collection;
use PHPUnit\Framework\TestCase;

class CollectionTest extends TestCase
{
    public function testIsCollectionOf()
    {
        $Collection = new Collection(Address::class);
        $this->assertInstanceOf($Collection, Collection::class);
    }
}

当我运行它时,我得到了这个错误:

PHPUnit 5.4.6 by Sebastian Bergmann and contributors.

Runtime:       PHP 7.0.6-6+donate.sury.org~trusty+1
Configuration: /var/www/project/phpunit.xml

E                                                                   1 / 1 (100%)


Time: 33 ms, Memory: 2.00MB

There was 1 error:

1) tests\CollectionTest::testIsCollectionOf
PHPUnit_Framework_Exception: Argument #1 (No Value) of PHPUnit_Framework_Assert::assertInstanceOf() must be a class or interface name

/var/www/project/vendor/phpunit/phpunit/src/Util/InvalidArgumentHelper.php:30
/var/www/project/vendor/phpunit/phpunit/src/Framework/Assert.php:1323
/var/www/project/tests/CollectionTest.php:19
/var/www/project/vendor/phpunit/phpunit/src/Framework/TestCase.php:1081
/var/www/project/vendor/phpunit/phpunit/src/Framework/TestCase.php:932
/var/www/project/vendor/phpunit/phpunit/src/Framework/TestResult.php:701
/var/www/project/vendor/phpunit/phpunit/src/Framework/TestCase.php:888
/var/www/project/vendor/phpunit/phpunit/src/Framework/TestSuite.php:753
/var/www/project/vendor/phpunit/phpunit/src/TextUI/TestRunner.php:465
/var/www/project/vendor/phpunit/phpunit/src/TextUI/Command.php:162
/var/www/project/vendor/phpunit/phpunit/src/TextUI/Command.php:113

ERRORS!
Tests: 1, Assertions: 0, Errors: 1

现在如果我 var_dump($Collection) 我得到:

object(Collection)#18 (2) {
  ["class_name":"Collection":private]=>
  string(32) "data\address\Address"
  ["_items":protected]=>
  array(0) {
  }
}

为什么?我的测试用例有什么问题?

最佳答案

参数顺序错误。试试这个:

$this->assertInstanceOf(Collection::class, $Collection);

关于php - 我如何在 PHPUnit 中断言 InstanceOf()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38021509/

相关文章:

PHP 网络应用程序

php - 当用户看到通知时更新阅读列

php - 使用 mysql select where 语句登录页面

unit-testing - Ember.js 中的单元测试

laravel - 如何在没有模型的情况下定义 Laravel 工厂?

c# - Sonar : Validate changes from a date

php - 错误的字符集放入数据库

PHPUnit 和 Selenium 示例 17.1

Java JUnit 参数化错误

testing - 如何在2.4版中找到hadoop-exmaples.jar?