如何在 .Do() 中执行两条指令?
How to execute two instructions in a .Do()?
我想在 .Do() 中执行多条指令。
类似于:
mocks.ExpectCallFunc(mockedFunc).Do(a++;someFunc();)
我怎样才能做到这一点?
您可以创建一个函数来包装您需要的东西(如果它是一个函数 + a++ 会有点开销),或者您可以创建并传递一个 Lambda。
例如-
auto additionalFunc = [](<mockedFunc's arguments>) { a++; doFunc() ;};
mocks.ExpectCallFunc(mockedFunc).Do(additionalFunc)
请注意,您的 lambda 必须 return 并接受与 mockedFunc 相同类型的参数(即使它不使用它们)。
所以如果你模拟的函数是 bool mockedFunc(std::string&)
auto additionalFunc = [](std::string&) { a++; doFunc() ; return true;};
如果您不能使用 lambda 表达式 (C++ < 11),那么您可能应该创建一个包含您需要的 2 个选项的函数。适用相同的准则(保留 return 值和参数)
我想在 .Do() 中执行多条指令。
类似于:
mocks.ExpectCallFunc(mockedFunc).Do(a++;someFunc();)
我怎样才能做到这一点?
您可以创建一个函数来包装您需要的东西(如果它是一个函数 + a++ 会有点开销),或者您可以创建并传递一个 Lambda。
例如-
auto additionalFunc = [](<mockedFunc's arguments>) { a++; doFunc() ;};
mocks.ExpectCallFunc(mockedFunc).Do(additionalFunc)
请注意,您的 lambda 必须 return 并接受与 mockedFunc 相同类型的参数(即使它不使用它们)。 所以如果你模拟的函数是 bool mockedFunc(std::string&)
auto additionalFunc = [](std::string&) { a++; doFunc() ; return true;};
如果您不能使用 lambda 表达式 (C++ < 11),那么您可能应该创建一个包含您需要的 2 个选项的函数。适用相同的准则(保留 return 值和参数)