From: <st...@m3...> - 2003-05-07 12:42:38
|
There are a couple of alternatives. One is to wrap the Socket class in a th= in veneer that implements just the functionality you need and which can the= n be mocked. That gives you a clear description of how /you/ use sockets, r= ather than the generic underlying library, and gives you somewhere to hang = all those helper methods. You then either have to take the interaction with= Socket on faith, test it with functional tests, or something like that. If you really want to get in there, you could look at AspectJ to allow you = to intercept the calls although, in practice, it's just an automated way to= implement the same idea. S. > Ah, think I see your point. The problem is Socket is a final class so > the only way to mock it is to wrap it in an object which is mockable. > This is what the alt classes are for these are interfaces which mirror > the Java API + wrappers for the Java API versions and mocks of the > wrappers. This allows you to provide a mock enviroment for testing > against things like Socket. >=20 > The draw back is that you to uses this method you have to write your > code to use the interfaces not the actually API classes. It does get a > bit ugly when you have to interface with a 3rd party class which > requires a java.net.Socket as you have to get the real socket from the > wrapper and pass it into these classes. You can make this neater by > wrapping the 3rd party classes up in as well though. |