gpt4 book ai didi

ruby-on-rails - 期望多个 not_to 改变 rspec 中的期望

转载 作者:行者123 更新时间:2023-12-04 05:52:56 27 4
gpt4 key购买 nike

我试图通过单个操作确保某些数据保持不变:

expect {
# running migration and user reload here
}.not_to change(user, :avatar_url).from(sample_avatar_url).and change(user, :old_avatar).from(nil)
sample_avatar_url是在规范文件开头定义的字符串。

基本上,我想检查是否 avatar_urlold_avatar保持不受 expect 中发生的事情的影响堵塞。

上面代码的输出是:

expect(...).not_to matcher.and matcher is not supported, since it creates a bit of an ambiguity. Instead, define negated versions of whatever matchers you wish to negate with RSpec::Matchers.define_negated_matcher and use expect(...).to matcher.and matcher.

最佳答案

这不起作用,因为尚不清楚这是否意味着不更改第一个而不更改第二个,或者不更改第一个但更改第二个。你有几个选择来解决这个问题

由于您正在检查静态值,因此请不要使用更改

..run migration and user reload..
expect(user.avatar_url).to eq(sample_avatar_url)
expect(user.old_avatar).to eq nil

或使用define_negated_matcher 创建一个not_change 匹配器
RSpec::Matchers.define_negated_matcher :not_change, :change
expect {
# running migration and user reload here
}.to not_change(user, :avatar_url).from(sample_avatar_url).and not_change(user, :old_avatar).from(nil)

关于ruby-on-rails - 期望多个 not_to 改变 rspec 中的期望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36723893/

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