2015-09-01 4 views
1

Я использую PHPUnit с CakePHP, чтобы проверить пользовательского Finder но тест каждый раз, когда пропущен, и я не знаю, что причинаTest каждый раз пропускается PHPUnit

ОК, но неполно, пропускается , или рискованные тесты!

TestCase:

class UsersTableTest extends TestCase 
{ 

public $fixtures = [ 
'app.users', 
     'app.user_types', 
     'app.bookings', 
     'app.stores' 
    ]; 

    public function setUp() 
    { 
     parent::setUp(); 
     $this->Users = TableRegistry::get('Users'); 
    } 

public function testFindUser(){ 
    $query = $this->Users->find('user', [ 
     'fields' => ['Users.id', 'Users.email', 'Users.password', 
      'Users.username'], 
     'conditions' => ['Users.id' => 900000] 
    ]); 
    $this->assertInstanceOf('Cake\ORM\Query', $query); 
    $result = $query->hydrate(false)->toArray(); 

    $expected = [ 
     [ 
      'id' => 900000, 
      'email' => '[email protected]', 
      'password' => 'usuariocomum1senha', 
      'username' => 'usuariocomum1username' 
     ] 
    ]; 

    $this->assertEquals($expected, $result); 
} 

Метод испытания:

public function findUser(Query $query, array $options){ 
    $query->where($options); 
    return $query; 
} 

Пользователи Крепеж:

public $records = [ 
    [ 
     'id' => 900000, 
     'email' => '[email protected]', 
     'password' => 'usuariocomum1senha', 
     'username' => 'usuariocomum1username', 
     'user_type_id' => 900000, 
     'created' => '2015-07-17 18:46:47', 
     'modified' => '2015-07-17 18:46:47' 
    ] 
] 

я следую этой обучающей программы CakePHP 3.0 Testing

[EDIT 1]

С --verbose флагом:

c:\xampp\htdocs\PROJETOS\Shopping>vendor\bin\phpunit --verbose tests\TestCase\Mo 
del\Table\UsersTableTest 
PHPUnit 4.8.6 by Sebastian Bergmann and contributors. 

Runtime:  PHP 5.6.3 
Configuration: C:\xampp\htdocs\PROJETOS\Shopping\phpunit.xml.dist 

III. 

Time: 15.87 seconds, Memory: 7.50Mb 

There were 3 incomplete tests: 

1) App\Test\TestCase\Model\Table\UsersTableTest::testInitialize 
Not implemented yet. 

C:\xampp\htdocs\PROJETOS\Shopping\tests\TestCase\Model\Table\UsersTableTest.php: 
58 

2) App\Test\TestCase\Model\Table\UsersTableTest::testValidationDefault 
Not implemented yet. 

C:\xampp\htdocs\PROJETOS\Shopping\tests\TestCase\Model\Table\UsersTableTest.php: 
71 

3) App\Test\TestCase\Model\Table\UsersTableTest::testBuildRules 
Not implemented yet. 

C:\xampp\htdocs\PROJETOS\Shopping\tests\TestCase\Model\Table\UsersTableTest.php: 
81 

OK, but incomplete, skipped, or risky tests! 
Tests: 4, Assertions: 2, Incomplete: 3. 

[РЕДАКТИРОВАТЬ 2]

При изменении тест:

public function testFindUser(){ 
    $query = $this->Users->find('user', [ 
     'fields' => ['Users.id', 'Users.email', 'Users.password', 
      'Users.username', 'Users.user_type_id', 'Users.created', 
      'Users.modified'], 
     'conditions' => ['Users.id' => 900000] 
    ]); 
    $this->assertInstanceOf('Cake\ORM\Query', $query); 
    $result = $query->hydrate(false)->toArray(); 

    $expected = [ 
     [ 
      'id' => 900000, 
      'email' => '[email protected]', 
      'password' => 'usuariocomum1senha', 
      'username' => 'usuariocomum1username', 
      'user_type_id' => 900000, 
      'created' => '2015-07-17 18:46:47', 
      'modified' => '2015-07-17 18:46:47' 

     ] 
    ]; 

    $this->assertEquals($expected, $result); 
} 

проверка по Выполняется, но не выполняется (hidrate(false) может создать и модифицировать prim Иные объекты) (Почему сейчас работает? почему 'user_type_id' => 900000 отображается)

моя консоль:

c:\xampp\htdocs\PROJETOS\Shopping>vendor\bin\phpunit tests\TestCase\Model\Table\ 
UsersTableTest 
PHPUnit 4.8.6 by Sebastian Bergmann and contributors. 

IIIF 

Time: 8.13 seconds, Memory: 7.75Mb 

There was 1 failure: 

1) App\Test\TestCase\Model\Table\UsersTableTest::testFindUser 
Failed asserting that two arrays are equal. 
--- Expected 
+++ Actual 
@@ @@ 
     'user_type_id' => 900000 
-  'created' => '2015-07-17 18:46:47' 
-  'modified' => '2015-07-17 18:46:47' 
+  'created' => Cake\I18n\Time Object (...) 
+  'modified' => Cake\I18n\Time Object (...) 
    ) 
) 

C:\xampp\htdocs\PROJETOS\Shopping\tests\TestCase\Model\Table\UsersTableTest.php: 
107 

FAILURES! 
Tests: 4, Assertions: 2, Failures: 1, Incomplete: 3. 

[EDIT 3]

Я чищу TestCase и удалить все не реализован тест (созданный запекать), и это выход:

c:\xampp\htdocs\PROJETOS\Shopping>vendor\bin\phpunit tests\TestCase\Model\Table\ 
UsersTableTest 
PHPUnit 4.8.6 by Sebastian Bergmann and contributors. 

. 

Time: 6.06 seconds, Memory: 7.50Mb 

OK (1 test, 2 assertions) 
**NOTE** CakePHP 3.0.11 PHPUnit 4.8.6 

ответ

1

У нас это было в другом вопросе, не так ли? Тест testFindUserне пропустит, он работает очень хорошо, как вы можете сказать из вывода PHPUnit, и из-за того, что вы получаете сообщение об ошибке при изменении кода, чтобы оно производилось, и ошибки, если они были пропущены, не было бы сбоев, и выход был бы IIIS.

OK, но неполные, пропускаются, или рискованные испытания!
Испытания: , Утверждения: 2, не завершены: .

* курсив моего

4 испытания в общей сложности, 3 неполных = 1 тест побежал

сообщения просто говорит, что есть неполная/не реализованная тесты, дополнительно к испытаниям, которые выполнялись OK.

Подробный вывод уровня делает это еще более понятным, показывая вам, какие именно тесты являются неполными - ни один из них не является вашим тестом testFindUser.

Возможно, вам захочется более подробно ознакомиться с документами, чтобы понять, как интерпретировать вывод.

https://phpunit.de/manual/current/en/textui.html

+0

OK Я удалить все не реализованные тесты (созданные выпекать) и поместить результат в редактировании 3 на мой вопрос, вы можете увидеть? – Ricardo

+0

@ricardo Да, я вижу это, это ожидаемый результат, он показывает, что 1 тест с 2 утверждениями прошел успешно. – ndm

+0

@ndn вы можете объяснить, как я тестирую [EDIT 2]? потому что я ожидаю String, но я получаю объект – Ricardo

Смежные вопросы