小编Stu*_*rys的帖子

如何使用testthat以未知顺序测试多个警告?

我想测试一个函数在警告的顺序可以变化时会生成多个警告(4个或更多)。我最好的尝试是基于前瞻性RegExp匹配。简化为2条警告,我知道我的RegExp在单个字符串输出上工作,因为以下两个都是正确的:

grepl("(?s)(?=.*2)(?=.*1)", "* warn 1.\n* warn 2.", perl=TRUE)
grepl("(?s)(?=.*2)(?=.*1)", "* warn 2.\n* warn 1.", perl=TRUE)
Run Code Online (Sandbox Code Playgroud)

但是,使用以下命令测试多个警告时,此方法不起作用 testhat::expect_warning

# The function generating warnings:
foo <- function() { warning("warn 1."); warning("warn 2.") }
foo()
Warning messages:
1: In foo() : warn 1.
2: In foo() : warn 2.

# Testing it
expect_warning( foo(), "(?s)(?=.*1)(?=.*2)", perl=TRUE)

Error: foo() does not match '(?s)(?=.*1)(?=.*2)'. Actual values:
* warn 1.
* warn 2.
Run Code Online (Sandbox Code Playgroud)

我怀疑这是因为的内部expect_warning功能正在像针对每个警告分别测试给定的RegExp一样-为什么expect_warning( ... all=TRUE )参数可能有意义。

不幸的是,我不能将它与RegExp之类的一起使用"1 | 2";如果只发出一个警告,则成功。 …

regex unit-testing r testthat

6
推荐指数
2
解决办法
362
查看次数

我可以在模板文件中填充dist-zilla填充任意字段吗?

有没有办法在文件中有一个用户定义的参数,然后dist.ini设置参数的值.例如,文件可能包含{{$THE_ANSWER}},dist.ini文件将提供类似的值THE_ANSWER = 42?我很高兴使用dist::zillaperl发行版,我在理解它如何将文件视为模板时遇到了问题.似乎只有几个硬编码参数,可以通过插件改变,可以用于任何文件.一个这样的参数是可用的{{$ NEXT}}变量[NextRelease]Changes的文件.

我阅读了教程并在CPAN上搜索了模块,无法确定这是否可行.使用[GenerateFile]插件将整个文件放在文件中是不可接受的解决方法dist.ini.除了缺乏灵活性和简单的丑陋之外,似乎不可能通过这种方式添加具有领先白色空间的线条.

perl perl-module dist-zilla

4
推荐指数
1
解决办法
186
查看次数

标签 统计

dist-zilla ×1

perl ×1

perl-module ×1

r ×1

regex ×1

testthat ×1

unit-testing ×1