有没有使用 Crystal 的内置spec
库对私有方法进行单元测试的方法?
我来自 PHP 背景,可以使用它ReflectionMethod::setAccessibility
来更改方法对公共的可访问性以允许对其进行测试。我在 Crystal API 文档中找不到任何类似的东西,所以只是想知道这样的东西是否存在。
有没有使用 Crystal 的内置spec
库对私有方法进行单元测试的方法?
我来自 PHP 背景,可以使用它ReflectionMethod::setAccessibility
来更改方法对公共的可访问性以允许对其进行测试。我在 Crystal API 文档中找不到任何类似的东西,所以只是想知道这样的东西是否存在。
我同意不应该测试私有方法。但是,如果您真的想这样做,您可以重新打开该类并重新定义该方法,而无需任何可见性(如此公开)并使用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)
如果Crystal
类似于 ruby 的语言比私有方法应该在公共方法中进行测试。或使用它的代码