1
class IEmployeeServiceProxy
{
public:
    virtual ~IEmployeeServiceProxy() { }
    virtual void AddEmployee(const Employee&) = 0;
    virtual int GetEmployees(std::vector<Employee>&) = 0;
};

struct Employee
{
    boost::uuids::uuid Id;
    std::string Name;
};

m_Mocks.ExpectCall(m_EmpSvcMock.get(), IEmployeeServiceProxy::GetEmployees).Return???;

int (メソッドの戻り値の型) の代わりに引数を介して std::vector を返すようにモックするにはどうすればよいですか?

また、複数の ref 引数がある場合はどうなりますか?

4

2 に答える 2

2

Gitバージョン(最新のもの)には、ほぼこれであるOutパラメーターのオプションがあります。使用するには

std::vector<int> args; args.push_back(1); args.push_back(2);
mocks.ExpectCall(mock, IInterface::function).With(Out(arg));
于 2012-08-02T07:55:08.863 に答える
2

参照用のオブジェクトを自分で提供する必要があります。モックがそれを使用していることを確認してください。また、戻り値も提供する にWith関数を渡して変更できます。Do参照引数がいくつあっても構いません。例:

int AddSomeEmployees( std::vector< Employee >& v )
{
  v.push_back( Employee() );
  return 0;
}

  //test code
std::vector< int > arg;

mocks.ExpectCall( empSvcMock, IEmployeeServiceProxy::GetEmployees ).With( arg ).Do( AddSomeEmployees );

Dostd::function、ラムダなど、あらゆる種類の関数を使用できることに注意してください。

于 2012-08-02T07:49:22.983 に答える