Hi everyone,
for our UnitTests we use QTest and additionally Google Mock, but I struggle to decide how to write tests for methods which use local objects.
Say I have this method:
void foo::bar() {
SomeObject object;
object.load(member1);
object.doSomething(member2, member3);
useObject(object);
}
void foo::bar() {
SomeObject object;
object.load(member1);
object.doSomething(member2, member3);
useObject(object);
}
To copy to clipboard, switch view to plain text mode
Now, to be able to test certain things I would like to use a MockSomeObject instead of SomeObject. One way to do that would look something like this:
void foo::bar() {
QScopedPointer<SomeObject> object(SomeObjectFactory::singletonPtr()->instance(member1));
object->doSomething(member2, member3);
useObject(object);
}
void foo::bar() {
QScopedPointer<SomeObject> object(SomeObjectFactory::singletonPtr()->instance(member1));
object->doSomething(member2, member3);
useObject(object);
}
To copy to clipboard, switch view to plain text mode
In my test I would just replace SomeObjectFactory with MockSomeObjectFactory, which would create MockSomeObject.
Another way would look like this:
void foo::bar() {
SomeObject object;
object.load(member1);
bar(object);
}
void foo::bar(SomeObject& object) {
object.doSomething(member2, member3);
useObject(object);
}
void foo::bar() {
SomeObject object;
object.load(member1);
bar(object);
}
void foo::bar(SomeObject& object) {
object.doSomething(member2, member3);
useObject(object);
}
To copy to clipboard, switch view to plain text mode
I discussed this with a colleague, and we would really appreciate other opinions or other possibilities.
Bookmarks