1. Go to this page and download the library: Download rwslinkman/metronome library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
rwslinkman / metronome example snippets
$clientBuilder = new MetronomeTestClientBuilder();
$builder = new MetronomeBuilder($clientBuilder->build());
$environment = $builder->build();
$response = $environment->get("/");
$this->assertEquals(200, $response->getStatusCode());
class IndexControllerTest extends WebTestCase
{
/** @var MetronomeBuilder */
private $testEnvBuilder;
public function setUp() {
$clientBuilder = new MetronomeTestClientBuilder();
$clientBulder->controller(IndexController::class);
$this->testEnvBuilder = new MetronomeBuilder($clientBuilder->build());
$this->testEnvBuilder->setupController(IndexController::class);
}
public function test_givenApp_whenGetIndex_thenShouldReturnOK() {
/** @var MetronomeEnvironment */
$environment = $builder->build();
/** @var Response */
$response = $environment->get("/");
$this->assertEquals(200, $response->getStatusCode());
}
}
class IndexControllerTest extends WebTestCase
{
/** @var MetronomeBuilder */
private $testEnvBuilder;
public function setUp() {
$clientBuilder = new MetronomeTestClientBuilder();
$clientBulder->controller(IndexController::class);
$this->testEnvBuilder = new MetronomeBuilder($clientBuilder->build());
$this->testEnvBuilder->setupController(IndexController::class);
}
public function test_givenApp_whenGetIndex_andEmptyList_thenShouldReturnOK() {
$mockBuilder = new MetronomeDynamicMockBuilder(UserService::class);
$mockBuilder->method("getUsers", array());
$this->testEnvBuilder->injectObject("myapp.user_service", $mockBuilder->build());
/** @var MetronomeEnvironment */
$testEnv = $this->testEnvBuilder->build();
/** @var Response */
$result = $testEnv->get("/");
$this->assertEquals(200, $result->getStatusCode());
}
}
class ProductServiceInjector implements ServiceInjector {
private $loadAllProducts;
/**
* @return array Key => Value array of methods to mock and their respective results
*/
public function inject()
{
return array(
"loadAllProducts" => $this->loadAddProducts,
);
}
/**
* @return string The service name as defined in config.yml
*/
public function serviceName()
{
return "rwslinkman.products";
}
/**
* @return string Full namespace for the service to mock
*/
public function serviceClass()
{
return '\rwslinkman\Service\ProductService';
}
}
$clientBuilder = new MetronomeTestClientBuilder();
$clientBuilder->controller(ProjectController::class);
$this->builder = new MetronomeBuilder($clientBuilder->build());
$this->builder->setupController(ProjectController::class, array(
new MetronomeServiceArgument("projectsService", "my_app.projects_service"),
new MetronomeFormFactoryArgument("formFactory"),
new MetronomeSessionArgument("session")
));
$metronomeBuilder = new MetronomeDoctrineMockBuilder();
$metronomeBuilder->injectRepo(new ProductRepoInjector());
$entityManagerMock = $metronomeBuilder->buildEntityManager(ProductRepository::class);
$service = new ProductService($this->entityManager);
class ProductRepoInjector implements RepoInjector {
private $findAll;
/**
* @return array Key => Value array of methods to mock and their respective results
*/
public function inject()
{
return array(
"findAll" => $this->findAll,
);
}
/**
* @return mixed Acts as an identifier for the repository
*/
public function repositoryName()
{
return ProductRepository::class;
}
/**
* @return string Full namespace for the repository to mock
*/
public function repositoryClass()
{
return '\rwslinkman\Repository\ProductRepository';
}
}
use PHPUnit\Framework\TestCase;
class MyFixtureTest extends TestCase
{
public function test_givenFixture_whenLoad_shouldAlwaysPersist() {
$envBuilder = new MetronomeDoctrineMockBuilder();
$mockEm = $envBuilder->buildEntityManager();
$fixture = new MyFixture();
$fixture->load($mockEm);
$mockEm->shouldHaveReceived("flush");
}
}
class AdminControllerTest extends WebTestCase
{
/** @var MetronomeBuilder */
private $testEnvBuilder;
/** @var */ MetronomeLoginData */
private $loginData;
public function setUp() {
$clientBuilder = new MetronomeTestClientBuilder();
$clientBulder->controller(AdminController::class);
$this->testEnvBuilder = new MetronomeBuilder($clientBuilder->build());
$this->testEnvBuilder->setupController(AdminController::class);
$myUser = new MyUser(); // implements UserInterface
$this->loginData = new MetronomeLoginData($myUser, "rwslinkman.my_authenticator");
}
public function test_givenApp_whenGetIndex_andEmptyProductList_thenShouldReturnOK() {
// Add this line to actually use the login data.
$this->testEnvBulder->
$entity = new MyEntity();
$entityFormBuilder = new MetronomeEntityFormDataBuilder();
$entityFormBuilder
->formData($doctrineEntity)
->isValid(true);
$formData = $$entityFormBuilder->build();
// Simple forms
$formBuilder = new MetronomeFormDataBuilder();
$formBuilder
->isValid(true)
->formData("form_field_address", "some address")
->formData("form_field_zipcode", "123456");
$formData = $formBuilder->build();
$clientBuilder = new MetronomeTestClientBuilder();
$testEnvBuilder = new MetronomeBuilder($clientBuilder->build());
$envBuilder->injectForm($formData);
$testEnv = $this->envBuilder->build();
$testEnv->post("/register");
$clientBuilder = new MetronomeTestClientBuilder();
$testEnvBuilder = new MetronomeBuilder($clientBuilder->build());
$testEnv = $testEnvBuilder->build();
$testEnv->get("/admin/logs");
$flash = $testEnv->getFlashBag();
$this->assertNotEmpty($flash);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.