如何在 Crystal 中的抽象 class 上指定实例方法?

How do I spec instance methods on an abstract class in Crystal?

假设我有一个抽象 class,它有一个 non-abstract 实例方法供 children 继承:

# - abstract.cr
abstract class Abstract
  def foo
    2
  end
end

如何为此编写规范?

# - abstract_spec.cr

it "returns 2 from #foo" do
  Abstract.instance.foo.should eq 2 #???
end

可能有更好的方法(因此我发布了这个问题,我很乐意从社区获得反馈),但我能想到的一种方法是 class在测试中继承自父级。这样你就抽象地关注 class 的 "any" 实现。

# - abstract_spec.cr
class AbstractTest < Abstract
end

it "returns 2 from #foo" do
  AbstractTest.new.foo.should eq 2
end