Tag: Laravel

Jak uruchomić aplikację w Laravelu wewnątrz kontenera Dockera

Problem wielu projektów na komputerze developera.

W większości projektów web-devowych programiści stawiają lokalną kopię aplikacji nad którą pracują, aby mieć możliwość szybkiego testowania zmian bez konieczności aktualizacji plików na serwerze. Często jednak okazuje się, że różne projekty wymagają różnych zależności a nawet różnych wersji tych samych bibliotek. Zmieniając środowisko pod kątem jednego projektu zmieniamy konfigurację dla wszystkich innych projektów, ciężko jest zatem utrzymać wszystkie projekty działające, co jest niezmiernie uciążliwe gdy często przełączamy się między projektami. W takiej konfiguracji nie mamy również możliwości stworzenia dla każdej aplikacji środowiska lokalnego odzwierciedlającego środowisko produkcyjne.

Z pomocą przychodzą nam narzędzia typu Docker, które umożliwiają konteneryzację, czyli zamknięcie wielu różnych środowisk w swoich kontenerach. Dzięki temu każda aplikacja działa niezależnie w swoim własnym środowisku.

Laravel i Docker

W artykule tym omówimy sposób tworzenia kontenerów dla aplikacji laravelowych. Każda aplikacja będzie miała przypisany host, a konfiguracja będzie na tyle elastyczna, że łatwo będzie ją można dostosować do różnych projektów.

(więcej…)

Wprowadzenie do Laravel Dusk

Czym jest Laravel Dusk

Laravel Dusk jest narzędziem do automatyzowania przeglądarki i testowania stron budowanych w Laravelu. Narzędzie to uruchamia i steruje ChromeDriver, dzięki czemu mamy możliwość automatycznego testowania naszych aplikacji w przeglądarce.

Test-driven-development w Laravel Dusk

Test driven development to technika tworzenia oprogramowania, która opiera się na cyklu trzech następujących po sobie czynności: test czerwony -> test zielony -> refactoring. Więcej informacji na temat TDD można znaleźć w sieci, ja natomiast polecam książkę „TDD. Techniki programowania sterowanego testami” Dariusza Woźniaka, kod tej książki jest pisany w C#, ale zawarte w niej informacje są uniwersalne dla wszystkich języków programowania.

Dla potrzeb naszego artykułu musimy o TDD wiedzieć tyle, że najpierw piszemy test który zakończy się niepowodzeniem, później piszemy kod który powoduje że test kończy się powodzeniem, następnie robimy refactoring i przechodzimy do pisania kolejnego testu, tym samym zapętlając cykl.

(więcej…)

PHPUnit – testowanie aplikacji używającej zewnętrznego API

Załóżmy że mamy napisaną lub dopiero piszemy aplikację w PHP, która używa zewnętrznego API i z zwraca dane poprzez swoje własne API, czyli jest pośrednikiem.

Chcemy napisać testy naszych endpointów tak, żeby nie wykonywać zapytań do zewnętrznego API w czasie testów.

Jeden z naszych endpointów zwraca informacje o produkcie, jego adres to GET /product/{id}.

Nasz test mógłby wyglądać tak:

public function test_it_should_return_product()
{
    $response = $this->get('/products/' . $this->faker->randomNumber());
    $response->assertStatus(200);

    $response->assertJsonStructure([
        "id", "name", "price"
    ]);
}

W naszym kontrolerze używamy interfejsu ProductInterface który jest implementowany przez klasę ProductRepository, a ta z kolei używa klasy ProductProxy do wykonania zapytania do API. Klasas ProductProxy dziedziczy ogólną klasę BaseProxy, która zawiera metodę sendRequest(), to właśnie ta metoda odpowiada za wszelkie requesty HTTP do zewnętrznego API. Na początek więc zróbmy mock tej metody, aby upewnić się, że żaden z naszych testów nie wykona prawdziwego zapytania do zewnętrznego API.

(więcej…)

Api w Laravelu – zwracanie odpowiedzi zamiast przekierowań

Dawno mnie tu nie było, bo byłem na urlopie a zaraz po nim wskoczyłem do nowego projektu i jakiś czas zastanawiałem się o czym napisać. Natrafiłem na jedną rzecz, której użyłem już w kilku projektach, dlatego myślę, że warto o tym napisać.

Jeśli robiłeś API w Laravelu, możliwe że spotkałeś się z takim zachowaniem, że gdy walidacja requestu nie przechodzi, wykonywane jest przekierowanie. Zamiast tego, lepiej byłoby dostać w odpowiedzi JSON z informacją o błędzie. Jak to zrobić? Już pokazuję.

(więcej…)

Aplikacja wyświetlająca pogodę w Laravel + ReactJS

Dziś, w ramach samoszkolenia się z React’a, napisałem prostą appkę w Laravelu, która używa customowych komponentów napisanych w react’cie do wyświetlenia aktualnej pogody w zadanym mieście.

Demo: Aplikacja działa tutaj i wyświetla pogodę dla miasta Tomaszów Mazowiecki.

Nic nie stoi na przeszkodzie, żebyś sklonował(a) sobie repozytorium i uruchomił(a) aplikację podającą pogodę dla Twojej miejscowości.