How to test create model service? - Hack The Tech - Latest News related to Computer and Technology

Hack The Tech - Latest News related to Computer and Technology

Get Daily Latest News related to Computer and Technology and hack the world.

Monday, December 6, 2021

How to test create model service?

I decided to create CreateClassroomService to separte logic in my controller method.

class CreateClassroomService extends Service
{
    public function create(string $name, User $user): ?Classroom
    {
        $this->checkName($name);

        $classroom = new Classroom();
        $created = $classroom->setName($name)
            ->associateUser($user)
            ->save();

        return $created ? $classroom : null;
    }

    private function checkName(string $name): void
    {
        if (empty($name)) {
            throw new InvalidArgumentException();
        }
    }
}

I am trying to test this service as part of learning unit testing, but I don't know how. I don't know how to mock the classroom object to control what the method should return. Does this mean that creating this service was not a good idea because I am not able to test it? Should I build this service differently? Unless the service can be tested, but I don't know how... What should I check in assertion?

This is my test but it is not good because I am not able to force what should be returned.

public function testGivenCreateCorrectDataClassroomWillBeCreated(): void
    {

        $name = 'Test classroom';
        $user = Mockery::mock(User::class);


        $result = $this->service->create($name, $user);

        $this->assertTrue($result);

    }


source https://stackoverflow.com/questions/70237450/how-to-test-create-model-service

No comments:

Post a Comment