我正在学习如何使用https://github.com/rogpeppe/go-internal testscript模块测试 cli 程序。
当我在.txtar
文件中使用这一行时:
stderr /No help topic/gm
...实际的错误输出是:
No help topic for 'totalfoobar'
我得到了错误usage: stderr [-count=N] 'pattern'
。
我看过这里的文档,说实话,很难理解。我没有看到任何解释-count=N
。
我尝试了以下所有变体:
stderr -count=1 No help topic for 'totalfoobar'
stderr No help topic for 'totalfoobar'
stderr *No help topic*
无论字符串是什么,断言仍然会失败并出现相同的错误。
问:为了更灵活的测试,如何获取总 stderr / stdout 输出的子字符串?
用单引号引用该模式:
这些行由(*TestScript).parse解析:
最后将结果作为
args
参数传递给scriptMatch。scriptMatch 的实现表明,除了可选-count
标志之外,它只需要1 个参数。如果No help topic
不加引号,则会被解析为3个参数,不符合预期:顺便说一句,它编译的模式如下:
请记住,您应该使用 Go 风格语法编写正则表达式。