gpt4 book ai didi

c - 在 C 中模拟文件系统

转载 作者:太空宇宙 更新时间:2023-11-04 04:55:46 24 4
gpt4 key购买 nike

我开始用 C 语言编写一个简单的程序,并希望将配置存储在磁盘上。为了促进正确和正确的单元测试,我想做一些事情来防止被测代码实际读取和写入磁盘。

配置文件格式,为了便于论证,是YAML。

程序的 API 可能类似于:

myapp config

会转储整个配置。 (其中有一个预先存在的配置文件/模拟)

myapp config server

将转储服务器子 key 。 (其中有一个预先存在的配置文件/模拟)

myapp config server=example.com

将使用新值写入文件(无论是否有一个预先存在的文件)

在内部,配置只是一个结构,其中包含一些键、服务器主机、服务器端口和一个用户名,从中进行一些 API 调用。

我一点都不担心文件在磁盘(目录)上的位置或 getopt/CLI 解析,只是如何模拟网络和文件系统操作对我来说对于这个学习练习很重要。

问题更进一步,那就是问可以使用什么技术来对网络进行 stub 。

我很可能会使用 cmockery 和 libcurl。

我的第一个想法是“也许我应该制作一个像 read_configuration_file() 这样的函数,我可以在我的单元测试中模拟它”,但我真的不确定这样做的好处,在 ruby​​ 中 stub 文件系统的代码可能非常简单:

File.stubs(:read).with('./configuration.yml').returns("---\nserver: example.com\n")

并且,从这个背景出发,用 C 术语思考,我发现非常困难。

我观察到似乎没有多少人在 C 中测试这些东西,或者更具体地说,如果他们这样做了 - 他们并没有写它。

注意:这不是家庭作业问题,只是在我写完整件事后听起来有点像,我实际上只是想学习 C,来自 Ruby背景;您可能会注意到我关于尝试“正确”执行 C 主题的一些其他问题。

最佳答案

您可能想看看 CUNIT 的开发人员做了什么,看看是否可以避免重新发明轮子的一部分

http://sourceforge.net/projects/cunit/

关于c - 在 C 中模拟文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8539679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com