我想通过测试指定对象的受保护变量来检查方法的行为。因此,我想为这个指定的对象注入一个模拟对象。我的问题是这个对象是在这个方法中创建的,并没有通过参数给出。
bool MappingConfigurationBuilder::buildMappingConfiguration(MappingConfiguration*& mappingConfiguration)
{
...
ConfigurationForColor configurationForColor;
buildConfigurationForColor(configurationForColor);
mappingConfiguration = new MappingConfiguration(configurationForHeight, configurationForColor);
...
return true;
}
此方法应创建一个ConfigurationForColor,在受保护的方法buildConfigurationForColor(...)中更改其上的受保护变量,并将该对象分配给MappingConfiguration。我想检查configurationForColor上的受保护变量。
我可以使用Google Mock将configurationForColor的类型更改为模拟对象吗? 或者是他们测试受保护变量的另一种可能性?
答案 0 :(得分:0)
听起来你需要某种inversion of control。
为此,最好创建一个工厂,它返回Mapping Configuration类型对象(模拟或真实对象)。