Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> phpunit lapanie wyjatkow
nospor
post
Post #1





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Hejka, uzywam PHPUNit 6.3.0 i probuje lapac wyjatki jednak nie dziala

  1. use DataService\Exception\FileIOException;
  2.  
  3. ....
  4.  
  5. /**
  6.   * @expectedException FileIOException
  7.   */
  8. public function testLoadWithWrongFilePath(): void
  9. {
  10. throw new FileIOException('Aa');
  11. }
  12.  

Przy czyms takim dostaje blad
ReflectionException: Class FileIOException does not exist

oczywiscie klasa ta instnieje, namespace i wszystko jest ok. Gdy odpalam normalne obiekty (nie wyjatki) z tyych samych namespace wszystko dziala.

Zas gdy odpalam jakas metode, ktora rzuca tym wyjatkiem, to nie ma bledu, ze klasa wyjatku nie istnieje, jednak skolei w ogole nie lapie tego wyjatku i zglasza blad, ze rzucilo wyjatkiem ktorego nie zlapalo.
  1. use DataService\Exception\FileIOException;
  2. use DataService\FileIO\QuestionsFileIO;
  3.  
  4. ....
  5.  
  6. /**
  7.   * @expectedException FileIOException
  8.   */
  9. public function testLoadWithWrongFilePath(): void
  10. {
  11. $questionsIO = new QuestionsFileIO();
  12. $questionsIO->load('/wrong/path.scv'); // ta metoda rzuca wyjatkiem FileIOException
  13. }



Bawilem sie w jakies xdebug.show_exception_trace bo tylko to znalazlem w necie ale nie tez nic to nie poprawia.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




test:
  1. namespace Tests\Functional\DataService\FileIO;
  2.  
  3. use DataService\Exception\FileIOException;
  4. use DataService\FileIO\QuestionsFileIO;
  5. use PHPUnit\Framework\TestCase;


wyjatek
  1. namespace DataService\Exception;
  2.  
  3. use Exception;
  4.  
  5. class FileIOException extends Exception
  6. {
  7. }






Gdy zamiast komentarza @expectedException dam
$this->expectException(FileIOException::class);
to dziala dla pierwszej sytuacji, czyli gdy recznie odpalam wyjatek w tescie.
Nadal jednak nie dziala dla sytuacji, gdy to wywolywana metoda w tescie rzuca tym wyjatkiem

edit: dobra, wszystko dziala. W kodzie rzucajacym wyjatkiem mialem
  1. if (($handle = fopen($filePath, 'rb')) === false) {
  2. throw new FileIOException("Can not open '$filePath' file");
  3. }

I zanim rzucilo wyjatkiem to wpierw rzucalo bledem od fopen.... Dodalem @ i dziala (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.12.2025 - 12:49