Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace common\tests\unit\models;
- // use \common\tests\unit\TestCase; # я, наверное, не до конца разобрался в тонкостях автозагрузки новой yii, но codeception у меня отказался подхватываться
- class ProductModelTest extends \PHPUnit_Framework_TestCase
- {
- public function testGet()
- {
- $model = new \common\models\ProductModel;
- foreach (array('string', 0, false) as $item) { // тест написан не лучше модели - все это должно по=хорошему делаться через @expectedException и @dataProvider
- try {
- $model->get($item);
- $this->fail('Exception was expected for '.print_r($item, true).' input');
- } catch (\InvalidArgumentException $e) {} // т.к. модель и должна в таком случае выдавать исключение, то все в порядке.
- foreach (range(1,3) as $id) {
- $product = $model->get($id);
- $this->assertSame($product['id'], $id); // по-хорошему здесь уже должны вступать фикстуры и делаться полное сравнение.
- }
- $this->assertFalse($model->get(4)); // такого тоже в реальном тесте быть не должно, т.к. нет ничего плохого в продукте c id = 4. По=-орошему надо искать максимальный id и потом смотреть выхлоп для id, превышающий его.
- }
- }
- public function testGetAll() // это тоже должно делаться через фикстуры
- {
- $mockProducts = array(
- array('id' => 1, 'title' => 'CodeIgniter', 'description' => 'Quite popular framework from previous decade',),
- array('id' => 2, 'title' => 'Symfony', 'description' => 'A framework that promotes organizing everything in reusable bundles',),
- array('id' => 3, 'title' => 'Yii', 'description' => 'Framework that attracts developers by it\'s simplicity',),
- );
- $model = new \common\models\ProductModel;
- $this->assertSame($model->getAll(), $mockProducts);
- }
- public function existsDataProvider()
- {
- return array(
- array(0, false,),
- array(1, true,),
- array(2, true,),
- array(3, true,),
- array(4, false,),
- );
- }
- /**
- * @dataProvider existsDataProvider
- это - небольшая магия PHPUnit
- */
- public function testProductExists($id, $expectedResult)
- {
- $model = new \common\models\ProductModel;
- $this->assertSame($model->productExists($id), $expectedResult);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement