Как выполнить модульное тестирование приложений Slim Framework

Я пытался выполнить модульный тест, модифицируя примеры кода других людей, и каждый раз, когда я дохожу до того, что мои тесты выполняются без ошибок — я просто получаю те же сбои, когда ожидаю, что они пройдут. В Интернете не так много документации, и я не знаю, куда еще можно пойти с этим. Может кто-нибудь увидеть, где в моем коде я иду не так:

bootstrap.php (файл начальной загрузки phpunit)

В основном это просто контейнер для объекта $ app. Я запускаю объект $ app с теми же файлами, с которыми я запускаю свое реальное приложение (маршруты, конфиг).

<?php
/**
* This makes our life easier when dealing with paths. Everything is relative
* to the application root now.
*/
chdir(dirname('../'));

// require composer autoloader for loading classes
require 'vendor/autoload.php';

// app container class - singleton pattern
class App
{
// Hold an instance of the class
private static $instance;

public static function getInstance()
{
if (!isset(self::$instance)) {
// Instantiate a Slim application:
$app = new \Slim\Slim(array(
'mode' => getenv('APPLICATION_ENV') ?: 'production',
));

// set configuration
require 'app/config.php';

// include the routes (always after we've instantiated our app instance)
require 'app/routes.php';

self::$instance = $app;
}
return self::$instance;
}
}

Далее мой тестовый файл с одним тестом:

AccountsControllerTest.php

<?php

use Slim\Environment;

class AccountsControllerTest extends PHPUnit_Framework_TestCase {

public static function get($path)
{
Environment::mock(array(
'REQUEST_METHOD' => 'GET',
'PATH_INFO' => $path,
));

$app = App::getInstance();

//$app->middleware[0]->call();
$app->response()->finalize();
return $app->response();
}

public function testIndex() {

$response = $this->get('/accounts');

$this->assertContains('Accounts', $response->getBody());
}
}

Надеюсь, немного понятно, что я пытаюсь сделать. В основном просто проверьте наличие «Аккаунтов» (которое при загрузке в браузере присутствует)

Ниже приведен результат, который я получаю:

$ vendor/bin/phpunit
PHPUnit 4.3.4 by Sebastian Bergmann.

Configuration read from /var/www/shared-views-slim/phpunit.xml

F

Time: 33 ms, Memory: 4.75Mb

There was 1 failure:

1) AccountsControllerTest::testIndex
Failed asserting that '' contains "Accounts".

/var/www/shared-views-slim/tests/app/controllers/AccountsControllerTest.php:30

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

ОБНОВИТЬ:

routes.php

<?php

// Define a HTTP GET route:
$app->group('/accounts', function () use ($app) {

$controller = new App\Controllers\AccountsController($app);

// index

$app->get('/', function () use ($controller) {
$controller->index();
});

// show

$app->get('/:id', function ($id) use ($controller) {
$controller->show($id);
})->conditions(array('id' => '[1-9]([0-9]*)'));

// create

// form
$app->get('/create', function () use ($controller) {
$controller->create();
});

// action
$app->post('/', function () use ($controller) {
$controller->create();
});

// update

// form
$app->get('/:id/edit', function ($id) use ($controller) {
$controller->update($id);
})->conditions(array('id' => '[1-9]([0-9]*)'));

// action
$app->put('/:id', function ($id) use ($controller) {
$controller->update($id);
});

// delete

// form
$app->get('/:id/delete', function ($id) use ($controller) {
$controller->delete($id);
})->conditions(array('id' => '[1-9]([0-9]*)'));

//action
$app->delete('/:id', function ($id) use ($controller) {
$controller->delete($id);
});

});

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]