标签: phpunit

PHPUnit说路由未定义(Laravel)

我在路由上运行单元测试。有趣的是:PHPUnit对测试文件中第一个测试说“一切都好” ,但是如果只对文件中的第二个测试说完全未定义”,则完全相同的测试失败。

我试图只创建虚拟测试

$this->assertTrue(true);
Run Code Online (Sandbox Code Playgroud)

并把它作为第一个测试,第二个测试正是在做一些工作:

$this->call('GET', "http:....."); 
$this->assertRedirectedToRoute('login');
Run Code Online (Sandbox Code Playgroud)

它失败了。

但是,如果它在文件中排在第一位,则相同的测试也会使我成功。很奇怪。

有谁知道为什么会这样?

php phpunit unit-testing laravel laravel-5

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

PHPUnit排除Getters和setter

我读过一些人测试过,有些人没有.你什么时候进行单元测试getter/setter?

如果我想跳过单元测试getter和setter,我将如何使用PHPUnit管理它(跳过所有getter和setter)?

phpunit unit-testing

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

Laravel 5和PHPUnit测试由于未定义索引而失败:REMOTE_ADDR

我有一个基于Laravel 5的网站,并且希望在其上运行PHPUnit测试:为此,我的测试文件夹中包含以下文件:

ExampleTest.php

<?php

use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;

class ExampleTest extends TestCase
{
    /**
     * A basic functional test example.
     *
     * @return void
     */
    public function testBasicExample()
    {
        $this->visit('/')
             ->see('Laravel 5');
    }
}
Run Code Online (Sandbox Code Playgroud)

NewTest.php

<?

class Example22Test extends TestCase
{

    /**
     * My test implementation
     */
    public function testEncryptionIsIntelligent()
    {
        $this->visit('/')
        ->see('Laravel 5')
        ->visit('/auth/login')
        ->type('test.admin@', 'email')
        ->type('test.admin@eatlaravel.hu', 'email')
        ->type('admin', 'password')
        ->press('')
        ->seePageIs('/admin')
        ->see('Welcome to the dashboard')
        ->visit('/');
    }
}
Run Code Online (Sandbox Code Playgroud)

TestCase.php

<?php

#class TestCase extends Illuminate\Foundation\Testing\TestCase
abstract class …
Run Code Online (Sandbox Code Playgroud)

phpunit undefined laravel

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

PhpUnit内联DataProvider

所以问题是:有没有办法直接在注释中指定测试参数?像这样的东西:

 /**
 * @dataProvider [[0, 0, 0], [0, 1, 1], [1, 0, 1]]
 */
public function testAdd($a, $b, $expected)
{
    $this->assertEquals($expected, $a + $b);
}
Run Code Online (Sandbox Code Playgroud)

因为如果DataProvider仅使用简单数据集一次就很有用.

php phpunit

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

如何确定循环中哪个断言失败?

我有一个PHPUnit测试,循环遍历一个无效值数组,并断言每个函数都正确拒绝了.

例如,validateInput仅当输入是字符串时才返回true,否则返回false.

public function testValidateInput()
{
  $obj = new MyClass();
  $data = [
    null,
    42,
    21.21,
    -24,
    -12.12,
    false,
    array('key' => 'value'),
    (object) 'value'
  ];

  foreach ($data as $item){
    $this->assertSame(false, $obj->validateInput($item));
  }
}
Run Code Online (Sandbox Code Playgroud)

当测试失败时,我只得到行号 - 这对于所有值都是相同的,因为它在一个循环中.

1) MyClassTest::testValidateInput
Failed asserting that true is identical to false.

/home/jeff/MyClass/tests/MyClassTest.php:24
Run Code Online (Sandbox Code Playgroud)

如何确定断言失败的值?

php phpunit

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

vendor/bin/phpunit不适用于Lumen

我是Lumen(和Laravel)的新手.我用Composer创建了一个项目,现在我正在尝试让PHPUnit工作.

我正在关注一本书,在那里应该可以通过键入vendor/bin/phpunit终端来运行默认的传递测试,但它会给出错误:

'vendor'不被识别为内部或外部命令,可操作程序或批处理文件

我已经检查过phpunit文件实际存在,并且我的composer.json文件中将phpunit添加为依赖项.我也试过./vendor/bin/phpunitvendor/bin/phpunit/phpunit,但具有相同的结果.

我搜索谷歌寻找解决方案,但其他人似乎在运行时遇到问题phpunit(没有供应商/ bin),解决方案是使用完整路径vendor/bin/phpunit,但是因为我已经这样做了,所以不解决我的问题.

我在Windows机器上使用PHPStorm并通过PHPStorm运行PHP服务器.我没有修改默认的Lumen项目.

任何帮助是极大的赞赏!

更新:

尝试php vendor/bin/phpunit给出以下错误:

您需要使用以下命令设置项目依赖项:
wget http://getcomposer.org/composer.phar
php composer.phar install

我不确定这意味着什么,因为我已经安装了Composer.我使用Composer创建项目,但我没有更改默认的依赖项.

php phpunit laravel lumen

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

如何在laravel项目中运行vendor/bin/phpunit时修复权限被拒绝

每当我vendor/bin/phpunit在laravel项目的根路径中执行时,它都会返回Permission denied错误.我该如何解决这个问题?

重要提示:我不想使用composer update或删除部分或全部vendor/目录然后使用,composer install因为这些方法会改变太多文件,我的主人不会同意.

ps:lrwxrwxrwx 1工作26 Jul 21 07:10 phpunit - > ../phpunit/phpunit/phpunit

-rwxrwxrwx 1 work work 1199 Jul 22 08:19 ./vendor/phpunit/phpunit/phpunit

并且 chmod 775 -R vendor不起作用.

php phpunit laravel

2
推荐指数
4
解决办法
8538
查看次数

如何断言结果是PHPUnit中的电子邮件?

我希望能够测试结果是一封电子邮件(myMail@provider.com ..)

我试过用它来测试它是否是字符串:

$this->assertInternalType('string', $myExpectedEmail);
Run Code Online (Sandbox Code Playgroud)

但我认为这不是很准确......我试过这个:

$this->assertInternalType('email', $myExpectedEmail);
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

Type specified for PHPUnit_Framework_Constraint_IsType <email> is not a valid type.
Run Code Online (Sandbox Code Playgroud)

如何在PHPunit中测试电子邮件格式的任何想法/最佳实践?

php email testing phpunit unit-testing

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

PHPUnit成功回调函数?

在潜入PHP Unit的文档时,我发现如果测试失败,应该调用的函数,即onNotSuccessfulTest
但是是否有功能或任何方法可以用来指示测试成功?

比如我有3次测试,TestOneTestTwoTestThree。虽然我可以确定其中一项测试是否成功,但可以检查所有这些测试是否都以成功结束,并据此采取措施吗?

php phpunit unit-testing

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

PHPUnit try catch在测试用例中不起作用

我试图在PHPUnit测试中捕获异常,但它不能像我预期的那样工作.异常似乎陷入了更高的层次,我不明白为什么.

public function testException()
    {
        echo 'Enter';
        try {
            throw new Exception('error.');
        } catch (Exception $e) {
            echo 'catch Exception';
        }
        echo 'End';
    }
Run Code Online (Sandbox Code Playgroud)

在输出中,只有'Enter'可见.我没有达到'结束'.(我使用的是PHP7)

谢谢

编辑:更换所有Exception\Exception解决我的问题

php phpunit exception

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

标签 统计

phpunit ×10

php ×8

laravel ×4

unit-testing ×4

email ×1

exception ×1

laravel-5 ×1

lumen ×1

testing ×1

undefined ×1