有没有办法使用Crystal的内置spec
库对私有方法进行单元测试?
我来自PHP背景,并且可以使用ReflectionMethod::setAccessibility
将方法的可访问性更改为public以允许对其进行测试。我在Crystal API文档中找不到任何类似内容,所以只是想知道是否存在这样的事情。
答案 0 :(得分:3)
我同意不应该测试私人方法。但是,如果您真的想要这样做,您可以重新打开该类并重新定义该方法,而无需任何可见性(如此公开)并使用previous_def
。例如:
class Foo
private def bar(x, y)
x + y
end
end
# Reopen
class Foo
# Redefine bar
def bar(x, y)
# Invoke the previous definition
previous_def
end
end
foo = Foo.new
p foo.bar(1, 2)
答案 1 :(得分:0)
如果应该在公共方法中测试Crystal
类似于ruby的语言而不是私有方法。或者使用