OR参数匹配器

时间:2018-03-27 10:55:07

标签: googlemock gmock

#include <vector>
#include "gtest/gtest.h"
#include "gmock/gmock.h"

using namespace ::testing;
class A {
public:
    virtual void f(std::vector<int>& b, std::vector<int>& b1) { }
};
class AA : public A {
public:
    MOCK_METHOD2(f, void(std::vector<int>&, std::vector<int>&));
};
int main()
{
    std::vector<int> v = { 3,2,1 };
    std::vector<int> v1 = { 1,2,3 };
    AA a;
    EXPECT_CALL(a, f(ContainerEq(v), ContainerEq(v1))).Times(1);
    // code will call f finally
    return 0;
}

我模拟的函数f将传入2个向量。但是,序列可以是随机的,v,v1或v1,v都是正确的。如何在EXPECT_CALL中添加OR运算符,如:

EXPECT_CALL(a, f(ContainerEq(v) or ContainerEq(v1), ContainerEq(v1) or ContainerEq(v))).Times(1);

有可能吗?

1 个答案:

答案 0 :(得分:0)

是的,可以使用for(int m=1; m<5; ++m){ int[] Array+m = new int[5]; }

AnyOf

使用C ++ 11或更高版本,您还可以执行以下操作:

EXPECT_CALL(a, f(AnyOf(ContainerEq(v),ContainerEq(v1)),
                 AnyOf(ContainerEq(v),ContainerEq(v1)));