getContainer(); // only replace the user id $container->registerService('userId', function () { return $this->userId; }); // we do not care about the request but the controller needs it $container->registerService(IRequest::class, function () { return $this->createMock(IRequest::class); }); $this->controller = $container->query(TicketApiController::class); $this->mapper = $container->query(TicketMapper::class); } public function testUpdate() { // create a new note that should be updated $note = new MatrixTicket(); $note->setTitle('old_title'); $note->setContent('old_content'); $note->setUserId($this->userId); $id = $this->mapper->insert($note)->getId(); // fromRow does not set the fields as updated $updatedNote = MatrixTicket::fromRow([ 'id' => $id, 'user_id' => $this->userId ]); $updatedNote->setContent('content'); $updatedNote->setTitle('title'); $result = $this->controller->update($id, 'title', 'content'); $this->assertEquals($updatedNote, $result->getData()); // clean up $this->mapper->delete($result->getData()); } }