4 php testing phpunit unit-testing
我有这个文件结构:
- module
-- phpunit.xml
-- blaat.php
-- tests
--- blaatTest.php
Run Code Online (Sandbox Code Playgroud)
blaat.php 的内容
class Blaat
{
public function doSomething()
{
return 'my return value';
}
}
Run Code Online (Sandbox Code Playgroud)
测试/blaatTest.php 的内容
use PHPUnit\Framework\TestCase;
require_once './blaat.php';
class blaatTest extends TestCase
{
public function testCanBeCreatedFromValidEmailAddress(): void
{
$stub = $this->createMock(Blaat::class);
$this->assertEquals('foo', $stub->doSomething());
}
}
Run Code Online (Sandbox Code Playgroud)
phpunit.xml 的内容
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
bootstrap="./tests/bootstrap.php">
<testsuites>
<testsuite name="unit">
<directory>tests</directory>
</testsuite>
</testsuites>
<filter>
<blacklist>
<directory suffix=".php">vendor</directory>
</blacklist>
</filter>
</phpunit>
Run Code Online (Sandbox Code Playgroud)
当我在终端中运行时phpunit(当我在modules文件夹中时)我得到以下信息:
PHPUnit 6.0.8 by Sebastian Bergmann and contributors.
F 1 / 1 (100%)
Time: 427 ms, Memory: 22.00MB
There was 1 failure:
1) blaatTest::testCanBeCreatedFromValidEmailAddress
Failed asserting that null matches expected 'foo'.
/path/to/module/tests/blaatTest.php:19
FAILURES!
Tests: 1, Assertions: 1, Failures: 1.
Run Code Online (Sandbox Code Playgroud)
这怎么可能?我的方法将始终返回一个字符串,但 phpunit 说它得到一个空值作为返回。我在这里做错了什么?
来自文档(第 9 章。测试替身):
默认情况下,原始类的所有方法都会替换为仅返回 null 的虚拟实现(不调用原始方法)。
will($this->returnValue())例如,使用该方法,您可以将这些虚拟实现配置为在调用时返回一个值
所以这是默认行为,您需要自己进行检测。
| 归档时间: |
|
| 查看次数: |
3841 次 |
| 最近记录: |