多个连接模拟和 Rspec
Multiple joins mocks and Rspec
我想嘲笑这个说法,但我在互联网上找不到任何帮助我的东西:
someone_ids = Office.join(:address, id: :address_id)
.join(:office_someone, id: :id)
.pluck(:someone_id)
这是我使用的规范:
expect(Office).to receive(:join)
.with(:office_someone, { :id => :id })
.with(:address, { :id => :address_id })
.and_return([1])
有人知道如何模拟多个 join
吗?我正在使用 Sequel
.
以前 RSpec 有一个 stub_chain 方法可以让你轻松地做类似的事情,但它被删除了,因为它鼓励不良做法,现在你必须手动存根每个响应:
office = instance_double(Office)
expect(Office).to receive(:join)
.with(:address, { :id => :address_id })
.and_return(office)
expect(office).to receive(:join)
.with(:office_someone, { :id => :id })
.and_return(office)
expect(office).to receive(:pluck).with(:someone_id).and_return([1])
如果你发现自己重复太多的代码会让你考虑重构它,这最终是人们进行测试的原因之一:"If its hard to test, it might not be well designed"
我想嘲笑这个说法,但我在互联网上找不到任何帮助我的东西:
someone_ids = Office.join(:address, id: :address_id)
.join(:office_someone, id: :id)
.pluck(:someone_id)
这是我使用的规范:
expect(Office).to receive(:join)
.with(:office_someone, { :id => :id })
.with(:address, { :id => :address_id })
.and_return([1])
有人知道如何模拟多个 join
吗?我正在使用 Sequel
.
以前 RSpec 有一个 stub_chain 方法可以让你轻松地做类似的事情,但它被删除了,因为它鼓励不良做法,现在你必须手动存根每个响应:
office = instance_double(Office)
expect(Office).to receive(:join)
.with(:address, { :id => :address_id })
.and_return(office)
expect(office).to receive(:join)
.with(:office_someone, { :id => :id })
.and_return(office)
expect(office).to receive(:pluck).with(:someone_id).and_return([1])
如果你发现自己重复太多的代码会让你考虑重构它,这最终是人们进行测试的原因之一:"If its hard to test, it might not be well designed"