Hướng dẫn expectexceptionmessage phpunit
You are pretty much not able to test that branch as the code stands. Your try-catch block doesn't actually catch any exceptions. (
Then the test would be
In this test, IMO, you want to avoid constructing objects that you are going to use in your functions. For this code, I would pass in the two DateTimeZone objects as well as a DateTime object and perform the operations on them. Moving the creation of these other objects into a different function/class. This way you could mock the DateTimeZone and DateTime objects themselves and have more control over what is happening. This code it isn't too bad but it can cause trouble with trying to test other things. Also, be careful about catching a generic exception in your code. If you are using a mock object in a try-catch block, your code can catch a FailedTestException (thrown when a mock is not called with the right parameters or similar) which will be caught by your code. Making it look like your test is passing when it actually isn't. Again not a problem here due to the code and the lack of mocks but I wanted to make you aware of it. PHP 7.4 and PHPUnit 9 Using the PHPUnit homepage example (https://phpunit.de/getting-started/phpunit-9.html):
The homepage also shows us how to test the exception is thrown using the
That's great. But what if I want to test the exception is not thrown given valid input ? Looking
at the docs (https://phpunit.readthedocs.io/en/9.3/writing-tests-for-phpunit.html#testing-exceptions) there seems to be no mention of an inverse method to How should I approach this ? EDIT TO ADD: Just to make it perfectly clear, I'm looking to test an asked Sep 1, 2020 at 20:35 Little CodeLittle Code 1,2352 gold badges13 silver badges34 bronze badges 1 If an uncaught or unexpected exception is thrown, the test will fail. You don't have to do anything special, just run the code being tested. If there are no other assertions in the test method, you'll also have to do
answered Sep 1, 2020 at 20:39 Alex HowanskyAlex Howansky 47.6k8 gold badges74 silver badges95 bronze badges 2 Not the answer you're looking for? Browse other questions tagged php phpunit or ask your own question.I’m refactoring a legacy PHP codebase, and that includes writing new tests. While doing that, I found a class method that accepts only a predetermined set of values, and refuses any other value by throwing an exception. Below is a simplified representation of this class:
Promptly, I wrote a test to check if the method was filtering out invalid input values:
Easy peasy. But what if the method is not handling valid input values correctly? Since the method accepts only a small set of values, we could test all of them. However, PHPUnit 6 doesn’t have a We can easily overcome these limitations by adding an assertion
to the end of the test (
|