扩展 Scala 特性的对象。 Ruby相当于?
Objects Extending Scala traits. Ruby equivalent?
在 Scala 中,我可以编写一个实现特征的单例对象。
trait Greeter {
def greet = "Hello"
}
object MyGreeterObject extends Greeter
然后我就可以很容易地在我的测试中模拟 Greeter
var mockGreeter = new Greeter {
override def greet = "I'm a mock"
}
在 Ruby 中是否有等效的方法?最终,我希望能够模拟一些不需要状态并且最好由对象级方法提供(无论如何在 Scala 中)的方法。一旦我有了这个,我希望能够模拟我的测试。
在Ruby中称为Mixin,由Modules实现
module Greeter
def greet
'Hello'
end
end
# extending a specific object
o = Object.new.extend(Greeter)
p o.greet
# creating a specific class
MyGreeter = Class.new.extend(Greeter)
p MyGreeter.greet
但在 Ruby 中模拟非常简单。它不依赖于构建对象的方式。查看您最喜欢的 Ruby 测试框架的文档。
o = Object.new
o.expect(:greet, 'Hi, I am a mock')
p o.greet
在 Scala 中,我可以编写一个实现特征的单例对象。
trait Greeter {
def greet = "Hello"
}
object MyGreeterObject extends Greeter
然后我就可以很容易地在我的测试中模拟 Greeter
var mockGreeter = new Greeter {
override def greet = "I'm a mock"
}
在 Ruby 中是否有等效的方法?最终,我希望能够模拟一些不需要状态并且最好由对象级方法提供(无论如何在 Scala 中)的方法。一旦我有了这个,我希望能够模拟我的测试。
在Ruby中称为Mixin,由Modules实现
module Greeter
def greet
'Hello'
end
end
# extending a specific object
o = Object.new.extend(Greeter)
p o.greet
# creating a specific class
MyGreeter = Class.new.extend(Greeter)
p MyGreeter.greet
但在 Ruby 中模拟非常简单。它不依赖于构建对象的方式。查看您最喜欢的 Ruby 测试框架的文档。
o = Object.new
o.expect(:greet, 'Hi, I am a mock')
p o.greet