我想写一个包装I2C device driver (/dev interface -> I2C device files/character device files)的D类。为了在实现过程中打破对HW的依赖,我想模拟ioctl()。我怎样才能最轻松地做到这一点?
答案 0 :(得分:4)
writeln("hey ioctl, your mother is a hamster and your father smells of elderberries!");
不,我只是在开玩笑。
我要做的就是写一个看起来相同的假ioctl函数并使用import和version来欺骗它:
import core.sys.posix.sys.ioctl;
version(unittest)
int ioctl(int d, int request, ...) {
import std.stdio;
writeln("its a fake!");
return 0;
}
void main() {
ioctl(0, 0);
}
使用和不使用单元测试进行编译+运行将产生不同的结果。可以调用本地函数而不是真函数。