2

有没有使用 Crystal 的内置spec库对私有方法进行单元测试的方法?

我来自 PHP 背景,可以使用它ReflectionMethod::setAccessibility来更改方法对公共的可访问性以允许对其进行测试。我在 Crystal API 文档中找不到任何类似的东西,所以只是想知道这样的东西是否存在。

4

2 回答 2

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)
于 2016-12-04T23:10:01.653 回答
0

如果Crystal类似于 ruby​​ 的语言比私有方法应该在公共方法中进行测试。或使用它的代码

于 2016-12-05T18:54:54.373 回答