Skip to content

Instantly share code, notes, and snippets.

@christeredvartsen
Created March 5, 2012 19:48
Show Gist options
  • Save christeredvartsen/1980593 to your computer and use it in GitHub Desktop.
Save christeredvartsen/1980593 to your computer and use it in GitHub Desktop.
Issue with the at matcher in PHPUnit
<?php
class Bar {
public function run() {
// do something
}
public function exec() {
// do something
}
}
class Foo {
private $bar;
public function __construct(Bar $bar) {
$this->bar = $bar;
}
public function runBar() {
var_dump($this->bar->run());
var_dump($this->bar->run());
var_dump($this->bar->run());
}
public function execBar() {
var_dump($this->bar->exec());
}
}
class FooTest extends PHPUnit_Framework_TestCase {
public function testFoo() {
$bar = $this->getMock('Bar');
$bar->expects($this->any())->method('exec')->will($this->returnValue('exec'));
$bar->expects($this->at(0))->method('run')->will($this->returnValue('first run'));
$bar->expects($this->at(1))->method('run')->will($this->returnValue('second run'));
$bar->expects($this->at(2))->method('run')->will($this->returnValue('third run'));
$foo = new Foo($bar);
$foo->execBar();
$foo->runBar();
}
}
// Output:
// string(4) "exec"
// string(10) "second run"
// string(9) "third run"
// NULL
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment