【发布时间】:2014-12-06 21:41:34
【问题描述】:
我正在尝试测试一个接受“错误”类型参数的函数。该函数在某些情况下应该会出现恐慌,我正在尝试测试场景。
但是,当我尝试在 nil 值上使用 reflect.Call 时(可以将其传递给接受“错误”类型的函数),它似乎会导致恐慌并显示以下消息:
reflect: Call using zero Value argument
我找到了以下帖子,但未能将其集成到我的功能中。
- https://groups.google.com/forum/#!topic/golang-nuts/apNcACpl_fI
- https://groups.google.com/forum/#!topic/golang-nuts/WOUft8EZQ1I
相关围棋游乐场:http://play.golang.org/p/cYQMQ6amPH
在上面的操场上,我希望对 InvocationCausedPanic(PanicOnErr, nil) 的调用返回 false,但是,来自反射的上述恐慌导致误报。
我可以对InvocationCausedPanic 或invoke 函数进行任何修改以使其工作(同时保留其测试其他不能接受nil 作为参数的函数的能力 - 一个接受字符串的函数例如)?
也许问题在于函数的调用方式?
我尝试过InvocationCausedPanic(PanicOnErr, new(error)) 或InvocationCausedPanic(PanicOnErr, error(nil)) 之类的东西,但无济于事。
感谢您的建议。
【问题讨论】:
标签: testing reflection go