gpt4 book ai didi

rspec-rails - 如何测试服务对象的方法被调用?

转载 作者:行者123 更新时间:2023-12-04 06:41:44 24 4
gpt4 key购买 nike

我正在尝试为我的服务对象构建一些测试。

我的服务文件如下...

class ExampleService

def initialize(location)
@location = coordinates(location)
end

private

def coordinates(location)
Address.locate(location)
end

end

我想测试私有(private)方法是否被公共(public)方法调用。这是我的代码...

subject { ExampleService.new("London") }

it "receives location" do
expect(subject).to receive(:coordinates)
subject
end

但是我得到这个错误...

expected: 1 time with any arguments
received: 0 times with any arguments

最佳答案

如何测试服务对象的方法被调用?

简短回答:根本不测试

长答案:看过之后Sandi Metz advice on testing ,你会同意的,你会想要测试她的方式。

这是基本思想:

  • 您的类的公共(public)方法(公共(public) API)必须经过测试
  • 私有(private)方法不需要测试

要做的测试总结:

  • 传入查询方法,测试结果
  • 传入的命令方法,测试直接公开的副作用
  • 外发指令方法,期待发送
  • 忽略:发送给自己,命令给自己,查询给别人

取自slides session 。

关于rspec-rails - 如何测试服务对象的方法被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32788075/

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