R中的存根和模拟

时间:2012-03-14 22:41:36

标签: r testing

我花了很多时间在RSpec上,并花了一些时间进行xunit样式测试。我已经习惯于随意嘲笑和捣乱。

在R中有什么类似嘲笑或顽固的吗?它们有哪些框架?

如果不是,您如何隔离测试?

3 个答案:

答案 0 :(得分:5)

在您提出此问题后4年才可用,但testthat现在确实包含with_mock()函数:

https://github.com/hadley/testthat/blob/master/R/mock.R

似乎很适合这项法案。

答案 1 :(得分:4)

CRAN软件包RUnitsvUnittestthat都为R提供单元测试。

如果您需要不同的框架,则可能需要编写它。 CRAN很乐意接受您的代码(如果它符合通常的标准)。

答案 2 :(得分:2)

mockery包中还有stub个功能。它类似于with_mock,但也允许从基本R包中删除基元和函数。

示例:

g = function(y) y
f = function(x) g(x) + 1
test_that('demonstrate stubbing', {
    # before stubbing
    expect_equal(f(1), 2)

    # replace the function 'g' when called from 'f'
    stub(f, 'g', function(...) 100)
    expect_equal(f(1), 101)
})