m00t / phpspec-phpunit-matchers
将 IdentityMatcher 的比较符从 '===' 更改为 PHPUnit 的 assertEquals() 方法
dev-master
2015-01-23 17:14 UTC
Requires
- php: >=5.3.6
- phpspec/phpspec: ~2.0
- phpunit/phpunit: ~4.1
This package is not auto-updated.
Last update: 2024-09-14 16:44:23 UTC
README
此扩展将 PhpSpec 的 IdentityMatcher 从 "===" 更改为 PHPUnit 的 assertEquals() 方法。此外,它还将 PhpSpec 的差异更改为 PHPUnit 的差异。
动机
1. PHPUnit 拥有经过时间考验的比较库,它不仅提供 "==" 或 "===",所以我们可以直接使用它,不必担心使用 "shouldBeLike()" 而不是 "shouldReturn()"。
- 差异。
例如,我们有一些类
class Value { private $value; public function __construct($value) { $this->value = $value; } } class TestValueObject { public function getValue($value) { return new Value($value + 1); } } class TestValueObjectSpec extends ObjectBehavior { function it_can_get_value() { $this->getValue(42)->shouldReturn(new \Value(42)); } }
此扩展未应用时的 PhpSpec 输出("shouldReturn" 已更改为 "shouldBeLike")
$ bin/phpspec run spec/TestValueObjectSpec.php -v
TestValueObject
10 ✘ it can get value
expected [obj:Value], but got [obj:Value].
10 function it_can_get_value()
11 {
12 $this->getValue(42)->shouldBeLike(new \Value(42));
13 }
14 }
15
0 vendor/phpspec/phpspec/src/PhpSpec/Matcher/ComparisonMatcher.php:74
throw new PhpSpec\Exception\Example\NotEqualException("Expected [obj:Valu"...)
1 [internal]
spec\TestValueObjectSpec->it_can_get_value()
100% 1
1 specs
1 example (1 failed)
30ms
应用此扩展后的 PhpSpec 输出
$ bin/phpspec run spec/TestValueObjectSpec.php -v
TestValueObject
10 ✘ it can get value
expected [obj:Value], but got [obj:Value].
--- Expected
+++ Actual
@@ @@
Value Object (
- 'value' => 42
+ 'value' => 43
)
10 function it_can_get_value()
11 {
12 $this->getValue(42)->shouldReturn(new \Value(42));
13 }
14 }
15
0 vendor/phpspec/phpspec/src/PhpSpec/Matcher/IdentityMatcher.php:83
throw new PhpSpec\Exception\Example\NotEqualException("Expected [obj:Valu"...)
1 [internal]
spec\TestValueObjectSpec->it_can_get_value()
100% 1
1 specs
1 example (1 failed)
48ms
安装
- 在您的
composer.json中定义依赖关系
{ "require-dev": { ... "m00t/phpspec-phpunit-matchers": "dev-master", } }
- 安装/更新您的供应商
$ composer update m00t/phpspec-phpunit-matchers
- 通过在您的
phpspec.yml中指定其类来激活扩展
# phpspec.yml extensions: - M00t\PhpSpec\PHPUnitMatchers\Extension\PHPUnitMatchersExtension