As you're interested in testing the behavior of the Application Service itself, there's no need to turn it into an integration test with complicated setups going against a real database. You're not interested in testing the low-level details, so most of the time, a unit test will be enough:
class SignUpUserServiceTest extends \PHPUnit_Framework_TestCase { /** * @var \Lw\Domain\Model\User\UserRepository */ private $userRepository; /** * @var SignUpUserService */ private $signUpUserService; public function setUp() { $this->userRepository = new InMemoryUserRepository(); $this->signUpUserService = new SignUpUserService( $this->userRepository ); } /** * @test * @expectedException * \Lw\Domain\Model\User\UserAlreadyExistsException */ public function alreadyExistingEmailShouldThrowAnException() { $this->executeSignUp(); ...