【发布时间】:2013-04-05 03:33:38
【问题描述】:
我正在测试一个具有函数 foo 的接口的使用。这是我在我的模拟中对这个函数的实现:
class Mock
{
public:
void foo(Foo::const_iterator begin, Foo::const_iterator end) {
_begin = begin;
_end = end;
...
}
...
Foo::const_iterator _begin;
Foo::const_iterator _end;
};
然后我有一个测试来检查是否调用了 foo:
// test that function foo is not called
EXPECT_EQ(mock->_begin, Foo::const_iterator());
但这让我在 Visual Studio 中断言迭代器不兼容。如果我没有调用 foo(),我会期望 _begin 将等于 Foo::const_iterator()。为什么不呢?
【问题讨论】:
-
operator ==的Foo::const_iterator()是否允许将两个默认构造的实例相互比较?使默认构造的迭代器“无效”和“不同于任何迭代器”将是语义的有效选择。 -
@stardust_ 你如何比较一个成员和一个类型?