[odb-users] Unit-testing odb::result<MyClassTable>
Boris Kolpackov
boris at codesynthesis.com
Fri Jan 26 08:53:21 EST 2018
Javier Gutierrez <javier.gutierrez at web.de> writes:
> first of all thank you very much for the great job.
Thanks, I am glad you are enjoying it.
> I am in the process of unit-testing a function that calls a method that
> returns odb::result<MyClassTable>.
> So basically what I want is to mock that method and to return instead my own
> version of an odb::result object pointing to a couple of made-up
> MyClassTable objects.
> I have tried to create my own version of odb::result by inheriting from the
> template odb::view_result_impl, but can't figure out how to go further.
You would need to implement its virtual interface to load objects from,
say, a vector instead of the database:
virtual void
load (object_type&, bool fetch = true) = 0;
virtual id_type
load_id () = 0;
virtual void
next () = 0;
virtual void
cache () = 0;
virtual std::size_t
size () = 0;
> I analyzed the possibility to return std::vector instead of odb::result and
> to convert from odb::result to std::vector in the real method, but obviously
> that's an overkill..
Yes, if I were to go this direction, then I would make my code accept a
container template rather than odb::result<> so that I can call it either
with that or std::vector<>. The iteration interface in odb::result<> is
intentionally std-compatible to allow such generic code.
Boris
More information about the odb-users
mailing list