标签: phpunit

在phpunit中,是否有类似onconsecutivecalls的方法在"with"方法中使用?

使用PHPUnit,我正在嘲笑pdo,但我正在尝试找到一种方法来准备多个数据库查询语句.

$pdo = $this->getPdoMock();
$stmt = $this->getPdoStatementMock($pdo);

$pdo->expects($this->any())
    ->method('prepare')
    ->with($this->equalTo($title_query))
    ->will($this->returnValue($stmt));

$title_stmt = $pdo->prepare($title_query);
$desc_stmt = $pdo->prepare($desc_query);
Run Code Online (Sandbox Code Playgroud)

我想传递一些类似onConsecutiveCalls的"with"方法,所以我可以准备多个语句,如上所示.你会怎么做呢?

php junit phpunit pdo unit-testing

14
推荐指数
3
解决办法
7799
查看次数

使用PHPUnit测试RESTful Web服务

谁能告诉我如何使用PHPUnit测试RESTful Web服务?PHPUnit似乎没有这种能力.

php rest phpunit

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

PHPUnit:获取模拟方法调用的参数

我目前正在开发一个存储敏感数据的项目,因此必须能够根据请求删除它们.

我想测试我的实体(患者)是否使用空电话号码保存到数据库中.首先要做的是:获取传递给的参数PatientDao::savePatient(PatientModel $patient),并查看其phoneNumber属性.

所以这是PatientDao界面:

interface PatientDao {
    function savePatient(PatientModel $patient);
}
Run Code Online (Sandbox Code Playgroud)

以及我的测试文件中的代码:

$this->patientDao                    // This is my mock
            ->expects($this->once()) 
            ->method('savePatient'); // savePatient() must be called once

$this->controller->handleMessage(...);

$patient = ??; // How can I get the patient to make assertions with it ?
Run Code Online (Sandbox Code Playgroud)

我该怎么做,或者有没有其他方法可以确保患者使用空电话号码保存?

php phpunit mocking

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

PHPUnit和MySQL截断错误

我很头疼PHPUnit的行为总是TRUNCATE在插入灯具之前一直运行而没有先设置外键检查:

Syntax error or access violation: 1701 Cannot truncate a table referenced in a foreign key constraint

基本上,PHPUnit尝试在插入fixture之前截断表.我怎么告诉它SET FOREIGN_KEY_CHECKS=0;

php mysql phpunit

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

Symfony2演示测试问题

我刚刚安装了最后一个版本的phpunit,当我运行演示测试时:

bin/phpunit src/Acme/DemoBundle/Tests/
Run Code Online (Sandbox Code Playgroud)

我遇到了这个问题:

1) Acme\DemoBundle\Tests\Controller\DemoControllerTest::testIndex
RuntimeException: Unable to guess the Kernel directory.
Run Code Online (Sandbox Code Playgroud)

以及内核被引用的行

关于为什么这个DEMO TEST不起作用的任何想法?

testing phpunit symfony symfony-2.2

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

在集成测试中并行PHPUnit测试

随着运行完成PHPUnit套件所需的时间增加,我们的团队开始怀疑是否有可能并行运行单元测试.最近我读了一篇关于Paraunit的文章,Sebastian Bergman也写道,他将在PHPUnit 3.7中添加并行性.

但是,集成测试仍然存在问题,或者更常见的是与DB交互的测试.为了保持一致性,必须重置testDB并在每次测试后加载夹具.但是在并行测试中,竞争条件存在问题,因为所有进程都使用相同的DB.

因此,为了能够并行运行集成测试,我们必须为每个进程分配自己的数据库.我想问一下,如果有人对如何解决这个问题有一些想法.也许在另一个xUnit实现中已经实现了这个问题的解决方案.

在我的团队中,我们使用的是MongoDB,因此一个解决方案是以编程方式为每个PHPUnit进程创建一个配置文件,并生成数据库名称(对于此过程),在setUp()方法中我们可以将主TestDb克隆到此临时数据库中.但在我们开始实施这种方法之前,我想问一下你对这个主题的看法.

php phpunit integration-testing unit-testing parallel-testing

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

PHPUnit:测试对象数组

刚刚跳进PHPUnit,一直在阅读有关它的内容,尝试一些例子,以便为我未来的项目编写测试.

我需要测试这个场景,我有Student Class,它是这样的:

class Students
{
    public function getStudents($studentName, $studentId)
    {       
        $students= array();

        //Instantiating OldStudent Class from Old Project
        $oldStudents = \OldStudents::getStudentByName($studentName, $studentId);

        //Create a Student Object for every OldStudent found on Old Project and set
        //values
        foreach ($oldStudents as $oldStudent)
        {            
            $student = new \Entity\Student();

            //Set Student ID
            $student->setStudentId($oldStudent->getStudentID());

            //Set Student Name
            $student->setStudentName($oldStudent->getStudentName());    
           //.....other setters for student data, irrelevant for this example 

            $students[] = $student;            
        }

        return $students;
    }
}
Run Code Online (Sandbox Code Playgroud)

和学生班

Class Student
{
    protected $studentId;
    protected $studentName;

    public …
Run Code Online (Sandbox Code Playgroud)

php phpunit unit-testing

14
推荐指数
3
解决办法
5万
查看次数

如何防止PhpStorm在使用PHPUnit模拟时显示预期的...警告?

在PHPUnit中模拟一个接口时,PhpStorm在它被用作类型提示函数的参数时会抱怨.

interface InterfaceA{                                

}                                                    

class ClassA{                                        
    public function foo(InterfaceA $foo){}           
}                                                    

class PhpStormTest extends PHPUnit_Framework_TestCase
{                                                    
    public function testFoo(){                       
        $mock = $this->getMock("InterfaceA");        
        $a = new ClassA();                           
        $a->foo($mock);                              
    }                                                
}   
Run Code Online (Sandbox Code Playgroud)

$a->foo($mock);PhpStorm强调$mock警告Expected InterfaceA, got PHPUnit_Framework_MockObject_MockObject

图片

使用PHPUnit Mock时出现PhpStorm警告

我猜它正在发生,因为PHPUnit创建了一个运行时模拟器,而PhpStorm无法知道它实际上是在实现接口.

php phpunit unit-testing type-hinting phpstorm

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

Laravel/PHPUnit:断言json元素存在而不定义值

我在测试用例中发送了一个post请求,并且我想断言一个特定的元素,假设在响应中存在键'x'.在这种情况下,我不能说seeJson(['x' => whatever]);因为我不知道这个价值.当然,我不能这样做seeJson(['x']);.

有办法解决这个问题吗?

如果重要:Laravel:v5.2.31 PHPUnit:5.3.4

phpunit json laravel laravel-5.2

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

如何使用Laravel Passport通过API测试身份验证?

我正在尝试使用Laravel的Passport测试身份验证,并且没有办法......总是收到该客户端的401无效,我会留下您尝试的内容:

我的phpunit配置是来自laravel的基础配置

测试/ TestCase.php

abstract class TestCase extends BaseTestCase
{
    use CreatesApplication, DatabaseTransactions;

    protected $client, $user, $token;

    public function setUp()
    {
        parent::setUp();

        $clientRepository = new ClientRepository();
        $this->client = $clientRepository->createPersonalAccessClient(
            null, 'Test Personal Access Client', '/'
        );
        DB::table('oauth_personal_access_clients')->insert([
            'client_id' => $this->client->id,
            'created_at' => date('Y-m-d'),
            'updated_at' => date('Y-m-d'),
        ]);
        $this->user = User::create([
            'id' => 1,
            'name' => 'test',
            'lastname' => 'er',
            'email' => 'test@test.test',
            'password' => bcrypt('secret')
        ]);
        $this->token = $this->user->createToken('TestToken', [])->accessToken;
    }
}
Run Code Online (Sandbox Code Playgroud)

测试/特征/ AuthTest.php

class AuthTest extends TestCase
{
    use …
Run Code Online (Sandbox Code Playgroud)

testing phpunit laravel laravel-5 laravel-passport

14
推荐指数
4
解决办法
1万
查看次数