C项目的最小模拟实用程序。
narmock的Python项目详细描述
Narmock
A minimal mocking utility for C projects.
正在工作
narmock会发现在测试中被模拟的函数,并使用光滑的api生成模拟。
#include<time.h>#include"__mocks__.h"#include"narwhal.h"TEST(example){MOCK(time)->mock_return(42);ASSERT_EQ(time(NULL),42);}
This example is a test written with Narwhal but Narmock can be used with other test frameworks and anywhere in regular source code.
安装
可以使用pip
安装包。
$ pip install narmock
开始
命令行实用程序提供了两个基本命令,可以将narmock集成到任何类型的构建系统中。
usage: narmock [-h] (-g [<code>] | -f) [-d <directory>]
A minimal mocking utility for C projects.
optional arguments:
-h, --help show this help message and exit
-g [<code>] generate mocks
-f output linker flags
-d <directory> mocks directory
Check out the basic example for a simple Makefile that integrates both Narwhal and Narmock.
生成模拟
narmock -g
命令查找代码中模拟的函数,并生成分别定义和声明所有必需模拟的__mocks__.c
文件和__mocks__.h
文件。
$ gcc -E *.c | narmock -g
narmock要求预处理器扩展源代码。您可以直接将gcc -E
的输出管道到命令行实用程序。
默认情况下,__mocks__.c
和__mocks__.h
将在当前目录中创建。可以使用-d
选项指定不同的输出目录。
$ gcc -E tests/*.c | narmock -g -d tests
检索链接器标志
narmock -f
命令读取生成的__mocks__.h
文件,并输出将所有源文件链接到一起所需的链接器标志。
$ gcc $(narmock -f) *.c
默认情况下,该命令在当前目录中查找__mocks__.h
。可以使用-d
选项指定其他目录。
$ gcc $(narmock -f -d tests) tests/*.c
模拟API
MOCK
宏返回指向给定函数的模拟api的指针。
MOCK(time);
模拟返回
可以使函数返回特定值,而不调用其原始实现。
MOCK(time)->mock_return(42);printf("%ld\n",time(NULL));// Outputs 42
模拟实现
您可以切换函数的实现。
time_ttime_stub(time_t*timer){return42;}MOCK(time)->mock_implementation(time_stub);printf("%ld\n",time(NULL));// Outputs 42
禁用mock
您可以禁用模拟并使函数调用其原始实现。
MOCK(time)->disable_mock();printf("%ld\n",time(NULL));// Outputs the current time
贡献
欢迎捐款。请随时提出问题和改进建议。此项目使用poetry,因此如果希望能够在本地使用此项目,则需要首先安装它。
$ curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python
现在您应该能够安装所需的依赖项。
$ poetry install
代码遵循black代码样式。
$ poetry run black narmock
您可以使用poetry run make -C tests
运行测试。测试套件是用Narwhal构建的。
$ poetry run make -C tests
许可证-MIT