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...