gpt4 book ai didi

ruby-on-rails - 如何使用RSpec在一个对象上添加多个should_receive期望?

转载 作者:行者123 更新时间:2023-12-03 08:57:54 24 4
gpt4 key购买 nike

在我的Rails Controller 中,我正在创建同一模型类的多个实例。我想添加一些RSpec期望值,以便可以测试它是否使用正确的参数创建了正确的数字。所以,这就是我的规格:

Bandmate.should_receive(:create).with(:band_id => @ band.id,:user_id => @ user.id,:position_id => 1,:is_leader => true)
Bandmate.should_receive(:create).with(:band_id => @ band.id,:user_id =>“2222”,:position_id => 2)
Bandmate.should_receive(:create).with(:band_id => @ band.id,:user_id =>“3333”,:position_id => 3)
Bandmate.should_receive(:create).with(:band_id => @ band.id,:user_id =>“4444”,:position_id => 4)

这引起了问题,因为似乎Bandmate类只能设置1个“should_receive”期望值。因此,当我运行示例时,出现以下错误:

Spec::Mocks::MockExpectationError在'BandsController创建时应该创建所有bandmates'中
模拟'Class'可以通过({:band_id => 1014,:user_id => 999,:position_id => 1,:is_leader => true})创建,但是可以通过({:band_id => 1014,:user_id = >“2222”,:position_id =>“2”})

这些是第二个创建调用的正确参数,但是RSpec正在针对错误的参数进行测试。

有谁知道我可以如何设置我的should_receive期望以允许多个不同的通话?

最佳答案

多重期望根本不是问题。给定您对无序期望的特定参数,您遇到的是订购问题。检查this page以获得有关订购期望的详细信息。

简而言之,您应该在每个期望的末尾添加.ordered

关于ruby-on-rails - 如何使用RSpec在一个对象上添加多个should_receive期望?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/244009/

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