标签: phpunit

标头已经在PHPStorm中发送了运行单元测试

我正在尝试使用在PHPStorm中运行phpunit测试的集成方法,并使它无法正常工作。

PHP: 5.6.10 PHP单位:
4.5.1
PHPStorm:8.0.3

多亏了/sf/answers/2124185101/,我才知道必须将phpunit版本降级到<4.6。

查找/sf/answers/1813233271/我在配置中尝试了@runInSeparateProcess表示法和strerr =“ false | true”。通过进程隔离,我看到了与此用户相同的问题(基本上是phpunit --help,而不是每个测试都隔离)。使用stderr =“ false | true”可以得到相同的结果(无法修改标头信息……等等)。

在没有进程隔离或将stderr设置为true或false的情况下,测试运行良好,都可以通过测试。 终端中通过测试的屏幕截图,集成运行器失败

目前,我显然只是在终端中运行测试,但是我真的很希望能够使用coverage功能,但是对于标头调用之后的任何代码行,它基本上都没有用。

php phpunit phpstorm

1
推荐指数
1
解决办法
471
查看次数

PHP simplexml_load_file大小写返回false

我为我的PHP应用程序使用phpunit(100%覆盖率)进行单元测试,我有这个:

$xml = simplexml_load_string($soapResponse); 
if (false === $xml) {
    throw new \Exception('invalid XML'); 
}
Run Code Online (Sandbox Code Playgroud)

我找不到带有simplexml_load_stringreturn 的测试用例false

如果您有解决方案...谢谢

php phpunit simplexml simplexml-load-string

1
推荐指数
1
解决办法
4175
查看次数

使用代码接收测试文件上传

问题:

当使用带有PhpBrowser驱动程序的REST模块通过代码接收测试发出请求时,没有数据和文件通过Silex应用程序。

    // ApiTester $I
    $I->wantTo('Submit files');

    // prepare:
    $data = ['key' => 'value'];
    $files = [
        'file_key' => 'path/to/file.doc',
        'file2_key' => 'path/to/file2.doc'
    ];

    // act:
    $I->haveHttpHeader('Content-Type', 'multipart/form-data');
    $I->sendPOST('/attachments/', $data, $files);
Run Code Online (Sandbox Code Playgroud)

当前反应

 I have http header "Content-Type","multipart/form-data"
 I send post "/attachments/",{"key":"value"},{"file_key":"/path/to/file/...}
  [Request] POST http://localhost/attachments/ {"key":"value"}
  [Request Headers] {"Content-Type":"multipart/form-data"}
  [Page] http://localhost/attachments/
  [Response] 400
  [Request Cookies] []
  [Response Headers] {"Date":["Tue, 25 Oct 2016 09:15:31 GMT"],"Server":["Apache/2.4.10 (Debian)"],"Cache-Control":["no-cache"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Headers":["Content-Type, Authorization"],"Access-Control-Allow-Methods":["GET,PATCH,PUT,POST,HEAD,DELETE,OPTIONS"],"Content-Length":["1235"],"Connection":["close"],"Content-Type":["application/json"]}
  [Response] {"status":400,"meta":{"time":"2016-10-25 09:15:31"},"title":"Invalid Request","errors":"No data received","details":{"error_class":"Symfony\Component\HttpKernel\Exception\BadRequestHttpException"
Run Code Online (Sandbox Code Playgroud)

尝试过:

  • 更改Content-Type标头
  • 更改传递给sendPOST的文件数组到以下数组:
    • 文件路径文件对象(UploadedFile)
    • 文件数组

该测试可与Silex驱动程序一起使用,但在CI服务器上将不可选。我们还检查了Postman,API路由按预期工作,文件已发送且一切正常。

phpunit codeception web-api-testing

1
推荐指数
1
解决办法
1913
查看次数

Netbeans 8.2我无法创建PHPUnit测试

系统:Ubuntu 16.04/Netbeans 8.2/phpunit 5.1.3

我想开始在Netbeans中使用PHPunit.

我已经下载了PHPunit并配置了Netbeans以查看phpunit和phpunit-skelgen.phar,如下图所示:

用于phpunit的Netneans配置

我创建了一个简单的类来测试,使用@assert装饰器进行测试,如下所示:

简单的类来测试

问题是我的项目报告PHPUnit不活动...

在此输入图像描述

这似乎可以解释为什么我无法在此页面中找到"创建PHPUnit测试"的文件上下文菜单选项,如此图片所示.

文件上下文菜单

我的大脑现在已经被添加 - 我如何配置Netbeans以识别我想在项目中激活PHPUnit测试?

谢谢.

phpunit netbeans

1
推荐指数
1
解决办法
1611
查看次数

在Travis Build中运行PHPUnit时出现问题

我在Travis运行PHPUnit时遇到了一些麻烦.

我的travis配置很简单

language: php
php:
  - 7.0
  - 7.1
script: phpunit
Run Code Online (Sandbox Code Playgroud)

我的phpunit.xml如下,

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php">
    <testsuites>
        <testsuite name="Basic Test Suite">
            <directory suffix=".php">./tests/</directory>
        </testsuite>
    </testsuites>
</phpunit>
Run Code Online (Sandbox Code Playgroud)

还有我的composer.json

{
    "name": "nikhilkuria/nikeandphp",
    "description": "A PHP library used to work with Nike+ API",
    "type": "library",
    "authors": [
        {
            "name": "nikhilkuria",
            "email": "nikhilkuria@gmail.com"
        }
    ],
    "require": {
        "monolog/monolog": "^1.22"
    },
    "require-dev": {
      "phpunit/phpunit": "5.7.*"
    },
    "autoload": {
        "psr-4": {"NikeAndPhp\\": "src/NikeAndPhp"}
}
}
Run Code Online (Sandbox Code Playgroud)

问题是特拉维斯无法找到我的autoload.php.这是我在travis日志中看到的,

无法打开文件"/home/travis/build/nikhilkuria/nikeandphp/vendor/autoload.php".

整个日志都在这里.

这里似乎缺少什么?

php phpunit travis-ci composer-php

1
推荐指数
2
解决办法
834
查看次数

无法在Laravel 5.5中将APP_ENV设置为``测试''以进行单元测试

我在Homestead-7上使用Laravel 5.5,phpunit 6.5.5(我认为)。

我正在尝试本教程:https : //laravel-news.com/your-first-laravel-application(这应该告诉您很多我在框架方面的经验)

测试失败(由于TokenMismatchException),尽管我尝试了许多将其APP_ENV设置为的方法local,但我设法找出了设置为该变量的根本原因testing

最后,让我克服了这个问题的是设置变量,如下所示:

APP_ENV=testing vendor/bin/phpunit
Run Code Online (Sandbox Code Playgroud)

然后,测试成功完成。

我的问题是,我在做什么错?上述破解显然不是最好的方法。必须有一种正确执行此操作的方法。

更新资料

内容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">
    <testsuites>
        <testsuite name="Feature">
            <directory suffix="Test.php">./tests/Feature</directory>
        </testsuite>

        <testsuite name="Unit">
            <directory suffix="Test.php">./tests/Unit</directory>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist processUncoveredFilesFromWhitelist="true">
            <directory suffix=".php">./app</directory>
        </whitelist>
    </filter>
    <php>
        <env name="APP_ENV" value="testing"/>
        <env name="CACHE_DRIVER" value="array"/>
        <env name="SESSION_DRIVER" value="array"/>
        <env name="QUEUE_DRIVER" value="sync"/>
        <env name="DB_CONNECTION" value="sqlite"/>
        <env name="DB_DATABASE" value=":memory:"/>
    </php>
</phpunit>
Run Code Online (Sandbox Code Playgroud)

预先感谢您的宝贵时间。

phpunit laravel

1
推荐指数
1
解决办法
1721
查看次数

Laravel 5.6 Mail Pretend功能?

我正在使用Laravel 5.6(Spark 6.0)进行一些测试,并设置事件和通知.

我不想每次测试都发送电子邮件,有没有办法可以关闭进行测试?

做一些谷歌搜索显示添加'prepend'值到邮件配置:

'pretend' => env('MAIL_PRETEND', true)
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不起作用,我在Laravel文档中找不到任何内容.在l5.6还有办法做到这一点吗?

编辑:通过不起作用,我的意思是邮件仍然通过电子邮件发送.

谢谢!

phpunit laravel laravel-5

1
推荐指数
1
解决办法
756
查看次数

测试Eloquent Observer的方法是否触发事件

当Eloquent模型属性之一更新时,我正在使用的应用程序将触发一个事件。

Eloquent模型被调用Job,并且应该在更新属性JobCustomerTotalAmountDueChanged时触发duration。我在中有以下代码JobObserver

public function saved(Job $job)
{
    if ($job->isDirty('duration')) {
        event(new JobCustomerTotalAmountDueChanged($job));
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用进行测试时Event::fake,不会触发savedEloquent 事件,这意味着永远不会执行方法中的代码。从我看到的assertDispatchedassertNotDispatched方法仅适用于伪造的事件。有没有一种方法可以断言是否不触发特定事件Event::fake

php phpunit unit-testing laravel-5 laravel-5.5

1
推荐指数
1
解决办法
1429
查看次数

PHP单元,使用单元测试测试laravel日志消息

我正在使用PHPUnit为存储功能创建单元测试,该存储功能将数据存储在数据库中。

目前,我正在测试验证它是否已存储数据。

但是,我还想创建一个测试,以证明如果模型保存功能失败,则会生成laravel日志消息。

下面的代码显示了存储功能。“ log :: info”是我要测试的行。

谢谢。

public function store(Venue $venue){ 
    $saved =  $venue->save();
    if($saved == false){
        Log::info('Failed to Save Venue'. $venue);
    }
 }
Run Code Online (Sandbox Code Playgroud)

到目前为止,我通过了一个空模型,由于数据库限制,该模型将导致保存失败

public function test_venue_store_failed(){
   $venue = new Venue();
   $venueRepo = new VenueRepository();
   $this->withExceptionHandling();
   $venueRepo->store($venue);
}
Run Code Online (Sandbox Code Playgroud)

php phpunit unit-testing laravel laravel-5

1
推荐指数
1
解决办法
1907
查看次数

找不到致命错误类phpunit_framework_testcase

我在命令行中不断收到此错误:

致命错误。找不到ClassPHPUnit_ Framework_TestCase。

请我出来。

phpunit

1
推荐指数
1
解决办法
941
查看次数