gpt4 book ai didi

ruby-on-rails - 测试服务类 - Rails

转载 作者:行者123 更新时间:2023-11-28 20:31:17 25 4
gpt4 key购买 nike

我想知道你们如何在 Rails 中测试服务对象类?假设用户注册。在数据库中创建一个用户,将其添加到电子邮件列表中,然后发生其他事情。你如何测试这个?

class UserRegistrar
def sign_up(user)
User.create(user) # or something to this effect
EmailMarketing.add_to_email_list(user)
SuperSecretClass.do_secret_stuff(user)
LoggingThing.new.log_stuff_about(user)
end
end

( Controller Action )

def create
UserRegistrar.sign_up(params)
# stuff for the strong params, etc...
end

我所做的只是确保使用正确的参数调用方法。这些方法的结果(比如确保用户确实被添加到列表中)在各自的类中进行测试。我做得对吗?

最佳答案

是的,如果我需要为您展示的类编写单元测试,我会按照您说的方式进行,使用模拟。在您的示例中,所有工作都委托(delegate)给高级模型方法,这些方法需要自己的测试并且可能在多个地方使用,因此在测试中测试这些方法的功能没有意义服务。而且 mock 的方法调用也不多,所以不会太痛苦。

但是,

  • 如果这些模型方法中的任何一个仅在一项服务中使用,我会考虑将它们转移到服务中以精简模型并使服务更加连贯。如果我最终在服务上使用自己完成大量工作的方法,而不仅仅是委托(delegate),我会在服务测试中测试它们的功能,方法是创建数据库对象并断言服务如何更改它们。

  • 另一方面,如果我有一个只委托(delegate)的服务,它可能已经通过我的验收测试进行了全面测试(因为我正在做 BDD 并首先编写验收测试),并且没有必要对服务进行单元测试。

关于ruby-on-rails - 测试服务类 - Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23829771/

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