假设:
struct MockThis : public IMocker {
MOCK_METHOD0(ReturnThis, std::string());
};
我在这个对象上设置了一个ON_CALL,所以它返回一个默认值,但是假设我希望ReturnThis在我的特定测试中为每次调用返回一个不同的字符串,我该如何实现呢?
答案 0 :(得分:1)
你可以考虑做这样的事情:
struct MockThis : public IMocker {
MOCK_METHOD0(ReturnThis, std::string());
MockThis() {
ON_CALL(*this, ReturnThis())
.WillByDefault(Invoke(&real_, &MockThis ::ReturnStringVariations));
}
protected:
static std::string randomStrings[10];
std::string ReturnStringVariations() {
// Return some string on either random conditions, or calls counted, etc.
unsigned int strIndex = std::rand() % 10;
return randomStrings[strIndex];
}
};
std::string MockThis::randomStrings[10] = {
"Random string 1" ,
// ...
"Random string 10"
};
要从预定义数组生成字符串(如上所示),格式化的变体或其他内容,您可以考虑使用c++11 pseudo-random-numbers功能中的某些内容。