Codeception是PHP的现代全栈测试框架。 受BDD的启发,它为您提供了一种绝对新的编写验收、功能和单元测试的方式。 由PHPUnit提供支持。
尽管TDD(测试驱动开发)受到广泛普及,但一些PHP开发人员从来没有为他们的应用程序编写自动化测试,主要是因为他们认为它很难、慢或无聊。Codeception框架是为了实际测试而开发的。 它允许以单一、连贯的方式进行编写单元、功能、集成和验收测试。
它可以称为BDD(行为驱动开发)框架。 所有的Codeception测试都以描述性方式编写。 只要看着测试本体,您就可以清楚地了解正在测试的内容以及如何进行测试。 即使是具有许多断言的复杂测试也是用简单的PHP域特定语言(DSL)编写的。
验收测试样品:
<span class="pl-pse"><?php</span><span class="pl-s1"><span class="pl-smi">$I</span> <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-c1">FunctionalTester</span>(<span class="pl-smi">$scenario</span>);</span><span class="pl-s1"><span class="pl-smi">$I</span><span class="pl-k">-></span>wantTo(<span class="pl-s"><span class="pl-pds">'</span>create wiki page<span class="pl-pds">'</span></span>);</span><span class="pl-s1"><span class="pl-smi">$I</span><span class="pl-k">-></span>amOnPage(<span class="pl-s"><span class="pl-pds">'</span>/<span class="pl-pds">'</span></span>);</span><span class="pl-s1"><span class="pl-smi">$I</span><span class="pl-k">-></span>click(<span class="pl-s"><span class="pl-pds">'</span>Pages<span class="pl-pds">'</span></span>);</span><span class="pl-s1"><span class="pl-smi">$I</span><span class="pl-k">-></span>click(<span class="pl-s"><span class="pl-pds">'</span>New<span class="pl-pds">'</span></span>);</span><span class="pl-s1"><span class="pl-smi">$I</span><span class="pl-k">-></span>see(<span class="pl-s"><span class="pl-pds">'</span>New Page<span class="pl-pds">'</span></span>);</span><span class="pl-s1"><span class="pl-smi">$I</span><span class="pl-k">-></span>submitForm(<span class="pl-s"><span class="pl-pds">'</span>form#new_page<span class="pl-pds">'</span></span>, <span class="pl-c1">array</span>(<span class="pl-s"><span class="pl-pds">'</span>title<span class="pl-pds">'</span></span> <span class="pl-k">=></span> <span class="pl-s"><span class="pl-pds">'</span>Tree of Life Movie Review<span class="pl-pds">'</span></span>,<span class="pl-s"><span class="pl-pds">'</span>body<span class="pl-pds">'</span></span> <span class="pl-k">=></span> <span class="pl-s"><span class="pl-pds">"</span>Next time don't let Hollywood create art-house!<span class="pl-pds">"</span></span>));</span><span class="pl-s1"><span class="pl-smi">$I</span><span class="pl-k">-></span>see(<span class="pl-s"><span class="pl-pds">'</span>page created<span class="pl-pds">'</span></span>); <span class="pl-c"><span class="pl-c">//</span> notice generated</span></span><span class="pl-s1"><span class="pl-smi">$I</span><span class="pl-k">-></span>see(<span class="pl-s"><span class="pl-pds">'</span>Tree of Life Movie Review<span class="pl-pds">'</span></span>,<span class="pl-s"><span class="pl-pds">'</span>h1<span class="pl-pds">'</span></span>); <span class="pl-c"><span class="pl-c">//</span> head of page of is our title</span></span><span class="pl-s1"><span class="pl-smi">$I</span><span class="pl-k">-></span>seeInCurrentUrl(<span class="pl-s"><span class="pl-pds">'</span>pages/tree-of-life-movie-review<span class="pl-pds">'</span></span>); <span class="pl-c"><span class="pl-c">//</span> slug is generated</span></span><span class="pl-s1"><span class="pl-smi">$I</span><span class="pl-k">-></span>seeInDatabase(<span class="pl-s"><span class="pl-pds">'</span>pages<span class="pl-pds">'</span></span>, <span class="pl-c1">array</span>(<span class="pl-s"><span class="pl-pds">'</span>title<span class="pl-pds">'</span></span> <span class="pl-k">=></span> <span class="pl-s"><span class="pl-pds">'</span>Tree of Life Movie Review<span class="pl-pds">'</span></span>)); <span class="pl-c"><span class="pl-c">//</span> data is stored in database</span></span><span class="pl-pse"><span class="pl-s1">?</span>></span>
对于单元测试,您可以继续使用经典的PHPUnit测试,因为Codeception也可以运行它们。