我正在为二进制格式解析器编写测试,其API接受Connection对象。我想将二进制数据的例子直接放到测试用例中,因为这些例子很短且很多。
如果是文本格式,我只想写:
test_that("readFoo parses message X", {
data <- readFoo(textConnection("Bar"))
expect_that(data$q, 1)
})
...但readFoo
在内部使用readBin(…, 'raw')
,这需要二进制连接,而textConnection则不需要。因此,
test_that("readFoo parses message X", {
data <- readFoo(textConnection('\x01\x7a\x02\x2c\x7d\x0d\x5a\x0b\x0c\x01'))
expect_that(data$q, 1)
})
失败了:
Error in readBin(conn, "raw", 10) : can only read from a binary connection
是否可以使这项工作?
答案 0 :(得分:3)
您可能希望通过rawConnection()
函数使用a "raw connection",该函数的行为与textConnection()
基本相同。基础包文档中的交叉引用并不是很好,所以很容易错过这个。