【问题标题】:PHPUnit test not executingPHPUnit测试未执行
【发布时间】:2018-05-05 02:09:11
【问题描述】:

我正在尝试在 PHPUnits 中执行一些测试,但它没有被执行。

<?php

use \PHPUnit\Framework\TestCase;

class UserControllerTest extends TestCase {

    public function testThatCanGetNumber() {
        $mock = $this->getMockBuilder('UserModel')
            ->setMethods(array('getNumber'))
            ->getMock();

        $mock->expects($this->once())
            ->method('getNumber')
            ->with($this->equalTo(5));
    }
}

但是,如果我用\PHPUnit_Framework_TestCase 扩展类,它就会被执行。这是为什么呢?

这是我的phpunit.xml

<?xml version="1.0" encoding="UTF-8" ?>
<phpunit bootstrap="vendor/autoload.php"
         colors="true"
         verbose="true"
         stopOnFailure="false">
    <testsuites>
        <testsuite name="Test suite">
            <directory>tests</directory>
        </testsuite>
    </testsuites>
</phpunit>

【问题讨论】:

  • PHPUnit 在版本 6 中切换到命名空间。您需要使用 PHPUnit 版本 >= 6 和 \PHPUnit\Framework\TestCase 或 PHPUnit 版本
  • PHPUnit 4 和 PHPUnit 5 都具有向前兼容层,允许使用旧的 PHPUnit_Framework_TestCase 和新的 PHPUnit\Framework\TestCase 类名。
  • 我将不得不在这一点上向作者屈服,呵呵。 :)
  • @SebastianBergmann 那么解决方案是什么?我正在使用 PHPunit 6.4(稳定版)。因为使用PHPUnit_Framework_TestCase 不允许我使用$this-&gt;getMockBuilder('UserModel'),这也会导致错误提示Fatal error: Uncaught TypeError: Argument 1 passed to PHPUnit_Framework_MockObject_MockBuilder::__construct() must be an instance of PHPUnit\Framework\TestCase

标签: php unit-testing testing phpunit


【解决方案1】:

您希望该方法被调用,但您没有在测试中执行任何操作。您应该调用调用模拟方法的方法。

【讨论】:

    猜你喜欢
    • 2015-06-15
    • 2018-10-08
    • 2013-07-17
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 2015-05-31
    • 2013-11-04
    • 1970-01-01
    相关资源
    最近更新 更多