站架 PHP 入 Composer
初始化目次
- $ curl -sS https://getcomposer.org/installer | php
- $ chmod +x composer.phar
代
首先要定 Namespace , PHP 的 namespace 可使用 composer.json 定,定典以下:
- {
- "require-dev": {
- "codeception/codeception": "^2.2"
- },
- "autoload": {
- "psr-4": {
- "HelloWorld\\": "src"
- }
- }
- }
代
肯定指令可以操作後,接著下指令,就你把一始的目次都初始化好:
- $ php vendor/bin/codecept bootstrap
- Initializing Codeception in /Users/miles/GitHub/MilesChou/book-intro-of-ci
-
- File codeception.yml created <- global configuration
- tests/unit created <- unit tests
- tests/unit.suite.yml written <- unit tests suite configuration
- tests/functional created <- functional tests
- tests/functional.suite.yml written <- functional tests suite configuration
- tests/acceptance created <- acceptance tests
- tests/acceptance.suite.yml written <- acceptance tests suite configuration
- tests/_output was added to .gitignore
- ---
- tests/_bootstrap.php written <- global bootstrap file
- Building initial Tester classes
- Building Actor classes for suites: acceptance, functional, unit
- -> AcceptanceTesterActions.php generated successfully. 0 methods added
- \AcceptanceTester includes modules: PhpBrowser, \Helper\Acceptance
- AcceptanceTester.php created.
- -> FunctionalTesterActions.php generated successfully. 0 methods added
- \FunctionalTester includes modules: \Helper\Functional
- FunctionalTester.php created.
- -> UnitTesterActions.php generated successfully. 0 methods added
- \UnitTester includes modules: Asserts, \Helper\Unit
- UnitTester.php created.
-
- Bootstrap is done. Check out /Users/miles/GitHub/MilesChou/book-intro-of-ci/tests directory
代
再往返到的什都能的 NumberTest.php ,我加第一真正的:
- <?php // tests/unit/NumberTest.php
-
- class NumberTest extends \Codeception\Test\Unit
- {
- public function testShouldGet1WhenConstructArgIs1()
- {
- // Arrange
- $target = new \HelloWorld\Number(1);
- $excepted = 1;
-
- // Act
- $actual = $target->get();
-
- // Assert
- $this->assertEquals($excepted, $actual);
- }
- }
-
代
Codeception 可以整合的功能多,不外今天就先把元好就好。一向加上去,但辟者而言,只要下行指令,它就把所有都悉跑,生表有由程,非常所便。 今天的型程式可以到下哦!延更新,得可以用 Git 原版本。
站架 指令生 composer.json 、 composer.lock 案 vendor 目次。今朝的如下:
- ProjectRoot:
- - vendor/
- - composer.json
- - composer.lock
代 框架
昨天有出一些春的程式。然用,但假如要做的方式或是程,明要作出更多功能才能吻合需求。但不用心,源的世界有常多先,作出利用的框架,我可以良多。
源案用起心的,妨去 GitHub 按 Star 支一下吧!
目局:(注意 Number.php 案位置)
- ProjectRoot:
- - src/
- - Number.php
- - tests/
- - vendor/
- - codeception.yml
- - composer.json
- - composer.lock
代 它提醒,有新增一在 tests/unit/NumberTest.php 。面有一叫 testMe() 的方法,我在面加一必然的看看:
- <?php
-
- class NumberTest extends \Codeception\Test\Unit
- {
- public function testMe()
- {
- $actual = true;
- $this->assertTrue($actual);
- }
- }
代 安好後,建空目,去下指令就可以安 Codeception 了:
- $ mkdir -p /path/to/project
- $ cd /path/to/project
- $ composer require --dev codeception/codeception
代 建置情
诠一下:
- Function 名上的很白,如同上面所看到的,因了局看到的都是 function 名居多。
- 套件凡是供多 assert 供,上例是最常使用的 assertEquals() ,判值是不是相等。
履行一下,如果看到下面,代表你第一成功了。
有看到版的,恭喜你,情建好了!
正式程式
再先把昨天的 Number 加到案,程式以下: (注意要加 namespace)
- <?php // src/Number.php
-
- namespace HelloWorld;
-
- class Number
- {
- private $number;
-
- public function __construct($number)
- {
- $this->number = $number;
- }
-
- public function add($addend)
- {
- return $this->number + $addend;
- }
-
- public function sub($subtrahend)
- {
- return $this->number - $subtrahend;
- }
-
- public function get()
- {
- return $this->number;
- }
- }
代 指令生可履行的 composer.phar ,然後可以直接履行。想要用全域的式格局履行需要再下指令:(以下以全域的例型)
- $ sudo mv composer.phar /usr/local/bin/composer
代
$this->assertTrue($actual) 白一指的是:假 $actual 的容是 true ,若是 false 的,假定就了。以例子,假定是永久正的。我看行成果:
站架 若是看到跟上面一效果的,恭喜你,第一好了!
第一次跑的後果以下:
固然,我最先呢!新增的方法以下:
- $ php vendor/bin/codecept generate:test unit Number
- Test was created in /Users/miles/GitHub/MilesChou/book-intro-of-ci/tests/unit/NumberTest.php
代 此中 composer.json 是界案(也就是目次)所需要安的套件何,可以使用 composer require <vendor>/<package> 的指令或手 JSON 新增。 --dev 是表此套件是辟段才利用。弗成能上了才在,必然是辟的刻,所以 Codeception 加 --dev 。站架 一切就绪,可以下指令是不是有安成功:
- $ php vendor/bin/codecept --version
- Codeception version 2.2.7
代 
需要注意的是,上面三都是互有系系,系系如下:
- composer.json ,利用 PSR4 ,定 "HelloWorld\\": "src" ,代表 HelloWorld 的 Namespace src 找
- Number.php 天然就是放在 src 下面了
定好以後,下 composer dump-autoload 新生 autoload 定矩。只要程式一起有入 vendor/autoload.php ,以後就能在任何地方 new \HelloWorld\Number() 了。
Codeception 在入手下手履行前,先入 _bootstrap.php 做初始化,如入 autoload.php 就是一可以做的事,它的板也是的:
- <?php // tests/_bootstrap.php
- // This is global bootstrap for autoloading
-
- require __DIR__ . '/../vendor/autoload.php';
代
它做了什上面都有,部就不述了。不外有地方我小我上:
- .gitignore 它新增一行,那行我除
- 案 cp ./tests/_output/.gitignore ./tests/_support/_generated/
初始化完後,就能始行了
- $ php vendor/bin/codecept run
代
文章出自: 文章定位: