如何在 cmock 中为 "read" 函数配置期望值
How to configure expectations in cmock for a "read" function
给定一个正在测试的函数,它执行如下操作:
void funcUnderTest()
{
char buf[32];
int bufSize=32;
someReadFunction(buf, size);
}
int someReadFunction(char* buf, int size)
{
int readlen;
//loads buf with data
//returns number of bytes copied
return readlen;
}
我如何编写我的单元测试使得模拟函数:
- 用特定数据加载 buf
- returns 一个指定的 retval
例如:
void test_funcUnderTest()
{
char* testBuf="Hello World";
someReadFunc_ReturnArrayThruPtr_buf(testBuf,12) // Copy "testBuf" into "buf"
//How do we control return value?
funcUnderTest();
}
您可以通过组合多个期望来配置Mock对象。它应该像这样工作:
void test_funcUnderTest()
{
char* testBuf="Hello World";
someReadFunc_ExpectAnyArgsAndReturn(retval) // Return "retval" on next call
someReadFunc_ReturnArrayThruPtr_buf(testBuf,12) // Copy "testBuf" into "buf" on the same call
funcUnderTest();
}
但请注意,此调用的顺序很重要。通常您需要先调用“Expect”函数,然后再定义特定参数的行为。
给定一个正在测试的函数,它执行如下操作:
void funcUnderTest()
{
char buf[32];
int bufSize=32;
someReadFunction(buf, size);
}
int someReadFunction(char* buf, int size)
{
int readlen;
//loads buf with data
//returns number of bytes copied
return readlen;
}
我如何编写我的单元测试使得模拟函数:
- 用特定数据加载 buf
- returns 一个指定的 retval
例如:
void test_funcUnderTest()
{
char* testBuf="Hello World";
someReadFunc_ReturnArrayThruPtr_buf(testBuf,12) // Copy "testBuf" into "buf"
//How do we control return value?
funcUnderTest();
}
您可以通过组合多个期望来配置Mock对象。它应该像这样工作:
void test_funcUnderTest()
{
char* testBuf="Hello World";
someReadFunc_ExpectAnyArgsAndReturn(retval) // Return "retval" on next call
someReadFunc_ReturnArrayThruPtr_buf(testBuf,12) // Copy "testBuf" into "buf" on the same call
funcUnderTest();
}
但请注意,此调用的顺序很重要。通常您需要先调用“Expect”函数,然后再定义特定参数的行为。