Is it good practice to have a unit test that specifies how long a certain function takes to return a value. I’m unit testing a curl function and want to specify that it needs to time out after 5 seconds. Is this in line with the way unit tests work?
Share
Testing your function plus curl plus the server is more integration test than unit test. That being said, you don’t have to be that dogmatic, if you only have one test like that this certainly is viable. I’ve written, and still have tests that are not pure unit tests, but they do their job. I’ll keep them as far as they don’t go in my way.
The only thing I’d be bothered with is the five seconds timeout, which is very long for an unit test. Now, it depends on how often it occurs. Did you consider a basic test (e.g. pinging the server) prior launching curl to avoid starting a needless test.
If you’re looking for alternatives, what about splitting your test in two parts: 1/ test how curl is invoked ; 2/ test what your function does with the result ? That way you’ll be isolated from the server and you won’t need any timeout.