gpt4 book ai didi

ruby - 扩展 Scala 特性的对象。 ruby 等效?

转载 作者:太空宇宙 更新时间:2023-11-03 17:31:46 25 4
gpt4 key购买 nike

在 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

关于ruby - 扩展 Scala 特性的对象。 ruby 等效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33648234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com