【发布时间】:2016-06-10 03:44:06
【问题描述】:
是否可以测试输出两次?
这是代码
<?php
public function testAutoTriggerOff()
{
$user = array(
'id'=>1,
'name'=>'Andy',
'logTime'=> time()
);
$this->elevent->turnOffAutoTrigger();
$this->elevent->attach('Elevent\Test\Event\UserHasLoggedIn', new WelcomeUser);
$event = $this->elevent->setEvent('Elevent\Test\Event\UserHasLoggedIn', $user);
$this->expectOutputString('');
$this->elevent->trigger($event);
$this->expectOutputString('Welcome, Andy');
}
所以,在调用 setEvent 之后,我想测试一下没有输出..
而且,在调用触发器后,我想测试输出是否为“欢迎,安迪”
此测试通过。
但是,如果我将第一个测试输出更改为应该为 false 的内容,例如
$this->expectOutputString('this one should be false');
$this->elevent->trigger($event);
$this->expectOutputString('Welcome, Andy');
但是,测试也通过了。我预计它会失败,因为我想测试输出两次。
在触发之前,它应该没有输出。
触发后,输出应该是“Welcome, Andy”
那怎么测试呢?
【问题讨论】:
-
你实际上是在测试两个不同的东西,所以你应该把它分成两个单独的单元测试。
-
@jeroen 不,我不测试不同的东西。我测试自动触发是否真的关闭。如果自动触发关闭,我需要调用触发方法来触发监听器..如果它打开,我不需要调用触发器,它是自动触发的,因为设置了事件..请帮助
标签: php unit-testing testing phpunit