【发布时间】:2011-04-15 11:18:44
【问题描述】:
我想对使用相当大的状态记录的 gen_fsm 进行单元测试。该记录在 erl 文件中定义,该文件还定义了 gen_fsm,因此(据我所知)其他模块不可见。
可能的方法:
- 将记录放入 hrl 文件中,并将其包含在两个模块中。这没问题,但会将逻辑上归 gen_fsm 拥有的代码分散到多个文件中。
- 在单元测试模块中使用原始元组伪造记录。这将变得非常丑陋,因为记录已经超过 20 个字段。
- 从我的 gen_fsm 中导出一个函数,该函数将使用一些 record_info 魔术将 proplist 转换为正确的记录类型。虽然可能,但我不喜欢污染我的模块接口的想法。
- 实际上生成 gen_fsm 并向其发送一系列消息以使其处于单元测试的正确状态。这种方法有很大的复杂性(尽管 Meck 有帮助),我觉得我在浪费这些很棒的、纯粹的 Module:StateName 函数,我应该能够在没有大量设置的情况下调用它们。
还有其他建议吗?
【问题讨论】:
标签: unit-testing erlang