PHPUnit Mock Change the expectations later
mocking, php, phpunit
Solution
You could move the `setUp()` code into another method, which has parameters. This method gets then called from `setUp()`, and you may call it also from your test method, but with parameters different to the default ones.
Problem
I have a simple use case. I want to have a setUp method which will cause my mock object to return a default value: ``` $this->myservice ->expects($this->any()) ->method('checkUniqueness') ->will($this->returnValue(true)); ``` But then in some tests, I want to return a different value: ``` $this->myservice ->expects($this->exactly(1)) ->method('checkUniqueness') ->will($this->returnValue(false)); ``` I've used GoogleMock for C++ in the past and it had "returnByDefault" or something to handle that. I couldn't figure out if this is possible in PHPUnit (there is no api documentation and the code is difficult to read through to find what I want). Now I can't just change `$this->myservice` to a new mock, because in setup, I pass it into other things that need to be mocked or tested. My only other solution is that I lose the benefit of the setup and instead have to build up all of my mocks for every test.