【问题标题】:PHPUnit: Mockery not found when using @runTestsInSeparateProcessesPHPUnit:使用@runTestsInSeparateProcesses 时找不到嘲弄
【发布时间】:2016-01-16 05:35:35
【问题描述】:

我将 PHPUnit 与 Mockery 一起使用,后者是我通过 composer 安装的:

"require-dev": {
    "mockery/mockery": "0.9.*"
},

现在,考虑以下测试用例

<?php

use Mockery as m;

class FooTest extends PHPUnit_Framework_TestCase {
    function testFoo() {
        m::mock('DateTime');
    }
}

phpunit 运行良好。现在考虑以下几点:

use Mockery as m;

/**
 * @runTestsInSeparateProcesses
 * @preserveGlobalState disabled
 */
class FooTest extends PHPUnit_Framework_TestCase {
    function testFoo() {
        m::mock('DateTime');
    }
}

在这种情况下,我得到一个Class 'Mockery' not found 异常。

Mockery 未找到 - 实际上,/vendor 目录中没有找到任何内容,就好像作曲家自动加载完全搞砸了一样。 composer updatecomposer dump-autoload 我都跑过。

phpunit.xml

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="vendor/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false"
         syntaxCheck="false"
>
    <testsuites>
        <testsuite name="Package Test Suite">
            <directory suffix=".php">./tests/</directory>
        </testsuite>

    </testsuites>
</phpunit>

我使用的是 PHPUnit 3.7.10,我使用命令行 phpunit 运行测试,没有任何参数。

我该如何解决这个问题?

【问题讨论】:

  • 您的确切命令行是什么?你的 phpunit.xml 中有什么? PHPUnit 安装在哪里?如果有的话,引导脚本中有什么?
  • 嘿@Sven,查看编辑。

标签: php phpunit composer-php mockery


【解决方案1】:

升级到 PHPUnit 4.x 为我解决了这个问题。

【讨论】:

    猜你喜欢
    • 2019-08-10
    • 2014-01-16
    • 2019-08-03
    • 2017-09-01
    • 2020-09-06
    • 2016-08-08
    • 2014-10-27
    • 2021-03-03
    • 2017-05-12
    相关资源
    最近更新 更多