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

时间:2018-08-15 08:31:16

标签: crystal-lang

假设我有一个抽象类,该类具有供孩子继承的非抽象实例方法:

# - 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

1 个答案:

答案 0 :(得分:6)

可能有更好的方法(因此,我张贴问题,我希望得到社区的反馈),但是我可以想到的一种方法是让类继承自父类中的父类。测试。这样,您就可以抽象地专注于该类的“任何”实现。

# - abstract_spec.cr
class AbstractTest < Abstract
end

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