Testowanie
Testowanie
Ponieważzaczynamy dodawaćcoraz więcej我więcej funkcji做naszej aplikacji, jest prawdopodobnie dobry czas,由poruszyćtemat testowania。
Ciekawostka:Znalazłem błąd podczas pisania testow做迪高rozdziału。
ob娱乐下载Symfony używa PHPUnit)做testow jednostkowych。Zainstalujmy走:
1
美元ob娱乐下载symfony作曲家点播phpunit) - dev
Pisanie testow jednostkowych
SpamChecker
będzie pierwsząklasą,国防后勤局ktorej napiszemy暴躁的。jednostkowy Wygeneruj测试:
1
美元ob娱乐下载symfony控制台:测试TestCase SpamCheckerTest
Testowanie SpamCheckera jest niemałym wyzwaniem, ponieważ聂chcemy sięłączyćz Akismet prawdziwym API。Będziemy musieli stworzyćatrapę(ang。模拟)。
Napiszmy nasz pierwszy测试国防后勤局przypadku kiedy API zwraca błąd w odpowiedzi:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31
- - - /测试/ SpamCheckerTest.php+ + + b /测试/ SpamCheckerTest.php@@ 2,12 + 2,26 @@名称空间的应用程序\测试;+使用App \实体\评论;+使用App \ SpamChecker;使用PHPUnit) \ Framework \ TestCase;+使用Syob娱乐下载mfony \ \ HttpClient \ MockHttpClient组件;+使用Syob娱乐下载mfony \组件\ HttpClient \ \ MockResponse反应;+使用Syob娱乐下载mfony \ \ HttpClient \ ResponseInterface合同;类SpamCheckerTest扩展TestCase {——公共职能testSomething():空白+公共职能testSpamScoreWithInvalidRequest():空白{- $ this - > assertTrue(真正的);+ $ = new评论评论();+ $评论- > setCreatedAtValue ();+ $上下文= [];++ $客户=新MockHttpClient([新MockResponse(“无效”,(“response_headers”= > [x-akismet-debug-help:无效的键的]])));+ $检查=新SpamChecker(客户美元,'中的');++ $ this - > expectException (\ RuntimeException::类);+ $ this - > expectExceptionMessage('无法检查垃圾邮件:无效(无效键)。”);+ $检查器- > getSpamScore(评论,上下文美元);}}
KlasaMockHttpClient
pozwala na stworzenie atrapy (ang。“模拟”)国防后勤局dowolnego serwera HTTP。Jako论点przyjmuje ona tablicęinstancjiMockResponse
z oczekiwanąodpowiedzią我nagłowkami。
Następnie wywołujemygetSpamScore ()
我przez metodęexpectException ()
w PHPUnit) sprawdzamy, czy otrzymaliśmy wyjątek。
Uruchom暴躁的,sprawdzićczy wykonująsiępoprawnie:
1
美元ob娱乐下载symfony php bin / phpunit)
Dodajmy暴躁的国防后勤局przypadku, gdy wszystko przejdzie bezbłędnie (tzw。愉快路径):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35
- - - /测试/ SpamCheckerTest.php+ + + b /测试/ SpamCheckerTest.php@@ -24、4 + 24、32 @@类SpamCheckerTest扩展TestCase $ this - > expectExceptionMessage(“无法检查垃圾邮件:无效(无效键)。”);$检查器- > getSpamScore(评论,上下文美元);}++ / * *+ * @dataProvider provideComments+ * /+公共职能testSpamScore (int expectedScore美元,美元ResponseInterface响应,评论评论,美元数组$上下文)+ {+ $客户=新MockHttpClient([$响应]);+ $检查=新SpamChecker(客户美元,'中的');++ $得分= $检查器- > getSpamScore(评论,上下文美元);+ $ this - > assertSame (expectedScore美元,美元的分数);+}++公共静态函数provideComments (): iterable+ {+ $ = new评论评论();+ $评论- > setCreatedAtValue ();+ $上下文= [];++ $ = new MockResponse (“[' response_headers ' = > [x-akismet-pro-tip:丢弃的]]);+“blatant_spam”= >[2,反应,美元美元评论,美元背景);++ $响应=新MockResponse(“真正的”);+“垃圾邮件”= >[1美元反应评论美元,美元背景);++ $响应=新MockResponse('错误');+“火腿”= >[0,反应,美元评论,美元背景);+}}
Dostawcy danych (ang。数据提供商)w PHPUnit) pozwalają南na użycie jednego schematu testu国防后勤局wielu przypadkow。
Pisanie testow funkcjonalnych国防后勤局kontrolerow
Testowanie kontrolerow jest nieco inne niżTestowanie zwykłej klasy PHP, ponieważchcemy我uruchamiaćw kontekścieżądania HTTP。
Stworz测试funkcjonalny国防后勤局kontrolera会议:
Użycieob娱乐下载
zamiastPHPUnit) \ \ TestCase的框架
jako klasy bazowej国防后勤局naszych testow, pozwala uzyskaćlepsząabstrakcję国防后勤局naszych testow funkcjonalnych。
Zmienna美元的客户
symuluje przeglądarkę。Jednak zamiastłączyćsięz serwerem przez HTTP, wykonuje ona kod bezpośrednio wewnątrz aplikacji Symob娱乐下载fony。马Strategia ta kilka zalet: jest znacznie szybsza niżwymiana danych pomiędzy klientem一serwerem oraz pozwala testom na sprawdzenie stanu serwisow阿宝każdymżądaniu HTTP。
200年十pierwszy测试sprawdza czy strona głowna zwraca jako kod statusu odpowiedzi HTTP。
ob娱乐下载Symfony rozszerza PHPUnit) dodając asercje typuassertResponseIsSuccessful
ułatwić南pracę。Istnieje wiele takich asercji zdefiniowanych przez ob娱乐下载Symfony。
提示
Użyliśmy/
jako URL zamiast generowania przez路由器。Jest celowy zabieg, ponieważtestowanie adresow URL użytkownika końcowego Jest częścią迪高,公司chcemy przetestować。Jeśli w przyszłości zmieni sięścieżka,暴躁的przypomnąCi,że prawdopodobnie powinno zostaćdodane przekierowanie泽starego adresu na nowy,赎byćprzyjaznym国防后勤局wyszukiwarek我stron internetowych, ktore odsyłają做Twojej strony。
Konfigurowanieśrodowiska testowego
Domyślnie PHPUnit) wśrodowisku Sob娱乐下载ymfony o nazwie测试
,达克木菠萝zostało ustawione w pliku konfiguracyjnym PHPUnit):
偿nasz测试zadziałałmusimy ustawićpoufny kluczAKISMET_KEY
国防后勤局środowiska测试
:
1
美元ob娱乐下载symfony控制台的秘密:集AKISMET_KEY——env =测试
Praca z testowąbaządanych
Widzieliśmy rownież,że narzędzie Sob娱乐下载ymfony CLI automatycznie udostępnia zmiennąśrodowiskowąDATABASE_URL
。Kiedy zmiennaAPP_ENV
jest ustawiona na测试
,podobnie木菠萝wtedy, kiedy uruchamialiśmy PHPUnit), zmienia nazwębazy danych z应用程序
naapp_test
偿,暴躁的miały swojąwłasnąbazędanych:
Jest bardzo ważne, ponieważbędziemy potrzebowaćdanych做przeprowadzenia naszych testow,啤酒też聂chcemy nadpisywać迪高,公司przechowujemy w bazie国防后勤局środowiska deweloperskiego。
Zanim będziemy mogli uruchomić测试,musimy zainicjalizowaćbazę测试
(stworzyćtębazę我wykonaćmigracje):
1 2
美元ob娱乐下载symfony控制台学说:数据库:创建- env =测试美元ob娱乐下载symfony控制台学说:迁移:迁移- n - env =测试
请注意
在Linux和类似操作系统,您可以使用APP_ENV =测试
而不是——env =测试
:
1
美元APP_ENV =测试ob娱乐下载symfony控制台学说:数据库:创建
Jeżeli teraz uruchomisz暴躁的,PHPUnit)聂będzie używałTwojej deweloperskiej bazy danych。偿uruchomićtylko nowe暴躁的,przekaż我ścieżki odpowiednich建议(ang。类路径):
1
美元ob娱乐下载php bin / symfony /控制器/ ConferenceControllerTest.php phpunit)测试
提示
Kiedy测试kończy sięniepowodzeniem, przydatny może okazaćsięwgląd obiektu响应。Możesz się做niego dostaćprzez客户端- > getResponse美元()
我użyć回声
由sprawdzićwygląda木菠萝。
Definiowanie danych testowych (ang。夹具)
偿商务部przetestowaćlistękomentarzy, stronicowanie wysyłanie formularza, musimy wypełnićbazędanych jakimiśdanymi。Dodatkowo chcemy,赎te戴恩były niezmienne pomiędzy poszczegolnymi testami。戴恩testowe (ang。fixture) sądokładnie tym, czego potrzebujemy。
Zainstaluj教义装置包:
1
美元ob娱乐下载symfony作曲家点播orm-fixtures - dev
Podczas instalacji zostałutworzony nowy文件夹src / DataFixtures /
z przykładowąklasą,gotowązmodyfikowania。Dodajmy dwie konferencje我jeden komentarz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35 36 37 38
- - - / src / DataFixtures / AppFixtures.php+ + + b / src / DataFixtures / AppFixtures.php@@ 2,6 + 2,8 @@名称空间的应用程序\ DataFixtures;+使用App \实体\评论;+使用App \实体\会议;使用原则\包\ FixturesBundle \夹具;使用原则\ \ ObjectManager持久性;8 + @@ 9日11日24 @@类AppFixtures延伸夹具{公共函数加载(ObjectManager经理美元):{无效——/ / $产品=新产品();——/ / $经理- >保存(产品);+ $阿姆斯特丹=新的会议();+ $阿姆斯特丹- > setCity(阿姆斯特丹);+ $阿姆斯特丹- > setYear (' 2019 ');+ $阿姆斯特丹- > setIsInternational(真正的);+ $经理- >保存(阿姆斯特丹);++ $巴黎=新的会议();+ $巴黎- > setCity(巴黎);+ $巴黎- > setYear (' 2020 ');+ $巴黎- > setIsInternational(假);+ $经理- >保存(巴黎);++ $ comment1 =新的评论();+ $ comment1 - > setConference阿姆斯特丹($);+ $ comment1 - > setAuthor(“法”);+ $ comment1 - > setEmail (fabien@example.com);+ $ comment1 - > setText(“这是一个伟大的会议。”);+ $经理- >保存($ comment1);$经理- >冲洗();}
W trakcieładowania danych testowych wszystkie dotychczasowe戴恩sąusuwane。偿uniknąćusunięcia konta administracyjnego, musimy dodać我做naszych danych testowych (ang。设备):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35 36
- - - / src / DataFixtures / AppFixtures.php+ + + b / src / DataFixtures / AppFixtures.php20 @@ @@ 2 13 + 2名称空间的应用程序\ DataFixtures;+使用App \实体\管理;使用App \实体\评论;使用App \实体\会议;使用原则\包\ FixturesBundle \夹具;使用原则\ \ ObjectManager持久性;+使用Syob娱乐下载mfony \组件\ PasswordHasher \切肉机\ PasswordHasherFactoryInterface;类AppFixtures延伸夹具{+公共职能__construct (+私人PasswordHasherFactoryInterface passwordHasherFactory美元,+){+}+公共函数加载(ObjectManager经理美元):空白{$阿姆斯特丹=新的会议();@@ -30 6 + 37 12 @@类AppFixtures延伸夹具$ comment1 - > setText(“这是一个伟大的会议。”);(管理器- >坚持美元comment1);+ $管理= admin ();+ $管理- > setRoles ([' ROLE_ADMIN ']);+ $管理- > setUsername(管理);+ $管理- >向setPassword ($ this - > passwordHasherFactory - > getPasswordHasher (admin::类)- >哈希('管理'));+ $经理- >保存(管理);+$经理- >冲洗();}}
提示
Jeśli聂pamiętasz, ktorego serwisu musisz użyć做danego zadania, użyj调试:自动装配
泽słowami kluczowymi:
1
美元ob娱乐下载symfony控制台调试:自动装配侍者
Ładowanie danych testowych (ang。夹具)
Załaduj戴恩testowe国防后勤局środowiska / bazy danych测试
:
1
美元ob娱乐下载symfony控制台学说:夹具:负载——env =测试
Przeszukiwanie (ang。爬行)strony w testach funkcjonalnych
木菠萝widzieliśmy, klient HTTP użyty w testach symuluje przeglądarkę,dzięki czemu możemy poruszaćsię阿宝stronie达克,jakbyśmy korzystali z przeglądarki鹿角的第二叉interfejsu。
Dodaj nowy测试,ktory kliknie w odnośnik做strony konferencji na stronie głownej:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
- - - /测试/控制器/ ConferenceControllerTest.php+ + + b /测试/控制器/ ConferenceControllerTest.php@@ -14,4 + 14、19 @@类ConferenceControllerTest延伸WebTestCase $ this - > assertResponseIsSuccessful ();$ this - > assertSelectorTextContains (h2,给你反馈);}++公共testConferencePage()函数+ {+ $客户=静态:createClient ();+ $履带= $客户- >请求(‘得到’,‘/’);++ $ this - > assertCount(2 $履带- >过滤器(h4));++ $客户- > clickLink(“视图”);++ $ this - > assertPageTitleContains(阿姆斯特丹);+ $ this - > assertResponseIsSuccessful ();+ $ this - > assertSelectorTextContains (h2,阿姆斯特丹2019);+ $ this - > assertSelectorExists (“div:包含(“有1评论”));+}}
Opiszmy prostymi słowami, siędzieje w tym teście:
- Tak木菠萝w pierwszym teście, otwieramy stronęgłowną;
- Metoda
请求()
zwraca instancjęklasy履带
,ktora pomaga znaleźćelementy na stronie (takie木菠萝odnośniki, formularze滑cokolwiek、做czego można dotrzeć咱pomocąselektora CSS滑XPath); - Dzięki selektorowi CSS sprawdzamy czy na stronie głownej sąwyświetlone dwie konferencje;
- Następnie klikamy w odnośnik“视图”(jakoże聂można kliknąćw więcej niżjeden odnośnik na拉兹,Symfony automaob娱乐下载tycznie wybierze pierwszy, ktory znajdzie);
- Sprawdzamy tytułstrony, odpowiedźserwera我
< h2 >
strony, upewnićsię,że znajdujemy sięna właściwej (moglibyśmy rownieżsprawdzić,czyścieżka sięzgadza); - 我w końcu sprawdzamy, czy na stronie znajduje sięjeden komentarz。
div:包含()
聂jest poprawnym selektorem CSS, jednak Symob娱乐下载fony posiada parętakich dodatkow zapożyczonych z jQuery。
Zamiast klikaćw tekst (np。视图
),mogliśmy rownieżwybrać联系咱pomocąselektora CSS:
1
美元客户端- >点击(美元履带- >过滤器(“h4 + p”)- >链接());
Sprawdźczy测试przechodzi“na zielono”:
1
美元ob娱乐下载php bin / symfony /控制器/ ConferenceControllerTest.php phpunit)测试
funkcjonalny Wysyłanie formularza przez测试
Chcesz wejśćna wyższy poziom吗?Sprobuj dodaćnowy komentarz泽zdjęciem przez formularz konferencji, symulując wysłanie formularza。Ambitne, prawda ?Spojrz na potrzebny kod:聂jest bardziej skomplikowany niż10,ktory jużnapisaliśmy:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
- - - /测试/控制器/ ConferenceControllerTest.php+ + + b /测试/控制器/ ConferenceControllerTest.php@@ -29,4 + 29日19 @@类ConferenceControllerTest延伸WebTestCase $ this - > assertSelectorTextContains (h2,阿姆斯特丹2019);$ this - > assertSelectorExists (“div:包含(“有1评论”));}++公共testCommentSubmission()函数+ {+ $客户=静态:createClient ();+ $客户- >请求(‘得到’,' /会议/阿姆斯特丹- 2019 ');+ $客户- > submitForm(“提交”,(作者)+ ' comment_form ' = > '法',+ ' comment_form[文本]' = > '一些反馈一个自动化的功能测试,(电子邮件)+ ' comment_form ' = >“me@automat.ed”,+ ' comment_form[图片]' = >目录名(__DIR__, 2)。“/公共/图片/ under-construction.gif”,+));+ $ this - > assertResponseRedirects ();+ $客户- > followRedirect ();+ $ this - > assertSelectorExists (“div:包含(有两个评论)');+}}
偿wysłaćformularz咱pośrednictwemsubmitForm ()
,znajdźnazwy elementow formularza, używając narzędzi deweloperskich w przeglądarce滑zakładki形式w panelu Symfony分析器ob娱乐下载。Zwroćuwagęna przemyślane ponowne wykorzystanie obrazka“w budowie”!
Uruchom暴躁的jeszcze拉兹,赎upewnićsię,że wszystkie przechodzą“na zielono”:
1
美元ob娱乐下载php bin / symfony /控制器/ ConferenceControllerTest.php phpunit)测试
Jeżeli chcesz sprawdzićwyniki w przeglądarce zatrzymaj serwer WWW我uruchom去ponownie,啤酒tym razem国防后勤局środowiska测试
:
1 2
美元ob娱乐下载symfony服务器:停止美元APP_ENV =测试ob娱乐下载symfony服务器:开始- d
Ponowneładowanie danych testowych (ang。夹具)
Jeśli uruchomisz暴躁的drugi拉兹,powinny zakończyćsięniepowodzeniem。Ponieważw bazie danych znajduje sięteraz więcej komentarzy, asercja sprawdzająca liczbękomentarzy聂będzie działaćpoprawnie。Musimy zresetować斯坦bazy danych pomiędzy każdym uruchomieniem poprzez załadowanie danych testowych (ang。设备):
1 2
美元ob娱乐下载symfony控制台学说:夹具:负载——env =测试美元ob娱乐下载php bin / symfony /控制器/ ConferenceControllerTest.php phpunit)测试
Automatyzacja一家(ang。工作流)z pomocąpliku Makefile
Zapamiętywanie sekwencji poleceń做przeprowadzenia testow jest irytujące。Jednym z rozwiązańmoże byćspisanie我,jednak dokumentacja powinna byćostatecznością。Może zamiast迪高powinniśmy zautomatyzowaćtęcodziennączynność吗?Byłaby,福马dokumentacji oraz ułatwienie我przyspieszenie一家国防后勤局innych。
UżywanieMakefile
jest jednym泽sposobow zautomatyzowania poleceń:
警告
Wcięcia w regułach pliku Makefilemusząskładaćsięz pojedynczego znaku tabulacji zamiast spacji。
Zwroćuwagęna flagę- n
przy poleceniu学说;jest globalna flaga国防后勤局poleceńSymfob娱乐下载ony, ktora sprawia,że聂sąinteraktywne之一。
użyj Kiedykolwiek będziesz chciałuruchomić暴躁的做测试
:
1
美元做测试
Resetowanie bazy danych阿宝każdym teście
Resetowanie bazy danych阿宝każdym teście jest w porządku,啤酒używanie prawdziwie niezależnych testow jest jeszcze lepsze。聂chcemy przecież,żeby jakikolwiek测试opierałsięna poprzednich wynikach。Zmiana kolejności testow聂powinna miećwpływu na rezultat。木菠萝sięzaraz przekonamy,聂jest poki prawdą。
Przenieś测试testConferencePage
德,znajdowałsię咱testemtestCommentSubmission
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
- - - /测试/控制器/ ConferenceControllerTest.php+ + + b /测试/控制器/ ConferenceControllerTest.php@@ -15 21 + 15 6 @@类ConferenceControllerTest延伸WebTestCase $ this - > assertSelectorTextContains (h2,给你反馈);}——公共testConferencePage()函数——{-客户=静态:美元:createClient ();-履带=美元客户- >请求(‘得到’,‘/’);- - - - - -- $ this - > assertCount(2 $履带- >过滤器(h4));- - - - - --客户- > clickLink(“视图”);- - - - - -- $ this - > assertPageTitleContains(阿姆斯特丹);- $ this - > assertResponseIsSuccessful ();- $ this - > assertSelectorTextContains (h2,阿姆斯特丹2019);- $ this - > assertSelectorExists (“div:包含(“有1评论”)');- - - - - -}- - - - - -公共函数testCommentSubmission(){$客户=静态:createClient ();@@ -44,4 + 29日19 @@类ConferenceControllerTest延伸WebTestCase $客户- > followRedirect ();$ this - > assertSelectorExists (“div:包含(有两个评论)');}++公共testConferencePage()函数+ {+ $客户=静态:createClient ();+ $履带= $客户- >请求(‘得到’,‘/’);++ $ this - > assertCount(2 $履带- >过滤器(h4));++ $客户- > clickLink(“视图”);++ $ this - > assertPageTitleContains(阿姆斯特丹);+ $ this - > assertResponseIsSuccessful ();+ $ this - > assertSelectorTextContains (h2,阿姆斯特丹2019);+ $ this - > assertSelectorExists (“div:包含(“有1评论”));+}}
Teraz暴躁的zwracająbłąd。
偿resetowaćbazędanych pomiędzy testami zainstaluj教义测试包:
1
美元ob娱乐下载symfony作曲家配置extra.symfony.allow-contrib真正的
1
美元ob娱乐下载symfony作曲家要求“dama / doctrine-test-bundle: ^ 6”——开发
Będziesz musiałpotwierdzićwykonanie przepisu (ang。配方),ponieważ聂开玩笑“oficjalnie”obsługiwany pakiet (ang。包):
1 2 3 4 5 6 7 8 9 10 11
ob娱乐下载Symfony操作:1配方(a5c79a9ff21bc3ae26d9bb25f1262ed7)——警告dama / doctrine-test-bundle(> = 4.0):从github.com/symfony/recipes-contrib:master这个包的秘诀来自“contrib”存储库,这是社区的贡献。欧宝体育平台怎么样检查配方在https://github.com/symfony/recipes-ob娱乐下载contrib/tree/master/dama/doctrine-test-bundle/4.0上你想执行这个配方吗?[y]是[n]不是[a]是的所有包,只有当前安装的会话[p]是永久的,不会又问这个项目(默认为n): p
Dodaj nasłuchiwacz PHPUnit) (ang。侦听器):
1 2 3 4 5 6 7 8 9 10 11 12 13
- - - a / phpunit.xml.dist+ + + b / phpunit.xml.dist10 @@ @@ -29年6 + 29日< /包括> < /覆盖>+ <扩展>+ <扩展类= " DAMA \ DoctrineTestBundle \ PHPUnit) \ PHPUnitExtension " / >+ < /扩展>+<听众> <侦听器类= "桥Symfony \ \ Phpob娱乐下载Unit) \ SymfonyTestsListener " / > < /听众>
我gotowe。Wszelkie zmiany dokonywane przez暴躁的będąteraz automatycznie cofane阿宝zakończeniu każdego z nich。
暴躁的znowu powinnyświecićsięna zielono:
1
美元做测试
Korzystanie z prawdziwej przeglądarki做testow funkcjonalnych
暴躁的funkcjonalne wykorzystująspecjalnąprzeglądarkę,ktora bezpośrednio wywołuje warstwęSymfonyob娱乐下载。Jednak dzięki ob娱乐下载Symfony豹,możesz rownieżużyćprawdziwej przeglądarki我prawdziwej warstwy HTTP:
1
美元ob娱乐下载symfony作曲家点播豹- dev
Następnie możesz pisać暴躁的z użyciem prawdziwego Google Chrome z następującymi zmianami:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
- - - /测试/控制器/ ConferenceControllerTest.php+ + + b /测试/控制器/ ConferenceControllerTest.php13 @@ @@ 2 13 + 2名称空间应用\ \测试控制器;用Symfob娱乐下载ony \包\ FrameworkBundle \ \ WebTestCase测试;+使用Syob娱乐下载mfony \ \豹\ PantherTestCase组件;海尔集团ConferenceControllerTest WebTestCase延伸+类ConferenceControllerTest PantherTestCase延伸{公共职能testIndex () {-客户=静态:美元:createClient ();+ $客户=静态:createPantherClient ([' external_base_uri ' = > $ _SERVER [' SYMFob娱乐下载ONY_PROJECT_DEFAULT_ROUTE_URL ']]);$客户- >请求(‘得到’,‘/’);$ this - > assertResponseIsSuccessful ();
Zmiennaśrodowiskowaob娱乐下载SYMFONY_PROJECT_DEFAULT_ROUTE_URL
zawiera这URL lokalnego serwera WWW。
Wybor odpowiedniego typu testu
做tej pory stworzyliśmy trzy rożne rodzaje testow。Chociażużyliśmy pakietu制造商tylko做wygenerowania klasy testow jednostkowych, moglibyśmy użyć走rownież做wygenerowania innych兰testowych:
1 2 3
美元ob娱乐下载symfony控制台:测试\ \ ConferenceController WebTestCase控制器美元ob娱乐下载symfony控制台:测试\ \ ConferenceController PantherTestCase控制器
制造商包umożliwia generowanie następujących typow testow w zależności od迪高,木菠萝chcesz przetestowaćswojąaplikację:
TestCase
:Podstawowe暴躁的PHPUnit);KernelTestCase
:Podstawowe暴躁的,ktore majądostęp usług Symfony;ob娱乐下载- “WebTestCase’”:赎uruchomićscenariusze oparte o zachowanie przeglądarki,啤酒ktore聂wykonująkodu JavaScript;
ApiTestCase
:赎uruchomićscenariusze testow oparte o API;- “PantherTestCase’”:赎uruchomićscenariusze e2e, używając prawdziwej przeglądarki滑klienta HTTP我prawdziwego serwera WWW。
Uruchamianie czarnoskrzynkowych testow funkcjonalnych (ang。黑盒)przy użyciu黑焰
Innym sposobem na przeprowadzenie testow funkcjonalnych jest użycie黑焰的球员。Oprocz zwykłych testow funkcjonalnych, potrafi rownieżprzeprowadzaćwydajnościowe极不稳定。
偿dowiedziećsięwięcej, zapoznaj sięz rozdziałemWydajność。
Idąc dalej
- 有鉴于asercji definiowanych przez Symob娱乐下载fony国防后勤局testow funkcjonalnych;
- Dokumentacja PHPUnit)
- Biblioteka骗子做generowania danych testowych;
- Dokumentacja komponentu CssSelector;
- ob娱乐下载Symfony豹biblioteka做testowania przez przeglądarkę我przeszukiwania (ang。爬行)stron internetowych w aplikacjach opartych na Symfonyob娱乐下载;
- Dokumentacja使/ Makefile。