- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 gen_fsm 回调模块 (my_fsm) 中有以下 init 方法:
init(Args) when length(Args) =:= 2 ->
% do work with Args here
{ok, my_state, InitialState}.
回调模块中没有其他初始化方法。
我想使用 eunit 编写一个单元测试,其中我断言使用不包含两个元素的参数列表调用 gen_fsm 会失败:
start_link_without_args_exits_test() ->
?assertException(exit, _, gen_fsm:start_link(my_fsm, [], [])).
但是,当测试运行时,eunit 会跳过测试并显示以下消息:
undefined
*unexpected termination of test process*
::{function_clause,[{my_fsm,init,[[]]},
{gen_fsm,init_it,6},
{proc_lib,init_p_do_apply,3}]}{proc_lib,init_p_do_apply,3}]}
为什么测试没有“捕获”此错误并将其报告为通过的测试?
最佳答案
异常实际上发生在gen_fsm
进程中。当调用 init/1
函数时,gen_fsm
捕获结果。如果它看到类似错误的内容,它会将错误发送回父级(通过 proc_lib:init_ack/1-2),然后调用 exit(Error)。
因为您使用 start_link
并且没有捕获退出,所以您将永远不会收到返回值 - 您只会崩溃。对于您的测试用例,您需要使用 start
或调用 process_flag(trap_exit,true)
以获得返回值,而不是仅仅在其他进程时崩溃下降。
然后您需要从
切换?assertException(exit, _, gen_fsm:start_link(my_fsm, [], [])).
类似
?assertMatch({error,{function_clause,[{my_fsm,init,_} | _]}},
gen_fsm:start_link(my_fsm, [], []))
为了让它运转良好。
关于unit-testing - ?assertException 实际上适用于 gen_fsm :startlink?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4050591/
我正在使用 HUnit 编写一些测试,我想断言特定函数在给定特定输入时会抛出异常。我找不到提供所需功能的断言函数。任何人都知道一个测试框架吗? 最佳答案 虽然 HUnit 没有附带任何异常断言,但编写
我正在尝试找出如何正确使用 JS 测试驱动程序的 assertException 方法。从谷歌的文档来看,它应该是:assertException([msg], callback, error)。但是
我在 gen_fsm 回调模块 (my_fsm) 中有以下 init 方法: init(Args) when length(Args) =:= 2 -> % do work with Args
我是一名优秀的程序员,十分优秀!