|Come for the quick hacks, stay for the epiphanies.|
Testing Wrapped LDAP Classesby yulivee07 (Sexton)
|on Dec 05, 2016 at 15:39 UTC||Need Help??|
yulivee07 has asked for the wisdom of the Perl Monks concerning the following question:
Hello fellow Perl-Monks,
I am expanding my knowledge in testing right now. I want to test some functions of mine which interact with an LDAP-Server.
This might sound like a stupid question, but what is the best way to deal with Wrapper-Classes?
I write a module, which gets some Users from LDAP.
To communicate with the LDAP, I use a provided module from my workplace which wraps some system-specific parameters in the LDAP-methods (Utils::Ldap::CompanyLdap) and provides some additional methods.
This module again is a subclass of another LDAP-Wrapper Module (Utils::Ldap::Base) which finally uses Net::LDAP.
Now, in my program I use the first Ldap-Module e.g.
I want to test the read_users function of my program, which gets its users via Utils::Ldap::CompanyLdap. How do I mock this? As you see, I do not directly interact with a Net::LDAP-Object
I have already understood that there is Test::Net::LDAP::Mock/Test::Net::LDAP::Utils qw(ldap_mockify) which can mock an Ldap Connection. What I do not understand yet: How can I use this in conjunction with my Wrapper Module? My module uses the code and the functions of our Ldap-Wrappers. Would the correct way be to write mocking code for the wrappers (e.g. Utils::Ldap::CompanyLdap::Mock), or is there a way of overwriting the Net::LDAP Object which is used by the Base-Wrapper Class Utils::Ldap::Base? I am not shure how to best approach this.
In case I get this working, is there a way of taking a Net::LDAP object and feeding it into my Mock-Object? I'd like to copy the datastructe of our LDAP to the Mock-Object.