微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Rspec 断言没有意义:使用 <message> 双重收到意外消息

如何解决Rspec 断言没有意义:使用 <message> 双重收到意外消息

这是一个最低限度可重现的示例,您只需复制它并使用最新版本的 gem install rspec 运行它。

#class Bar
#  def run_bar(a:,b:)
#    return
#  end
#end

def foo(bar)
  if bar != nil
    bar.run_bar(a: "test",b: {})
  end
end

describe 'foo' do
  it 'runs bar' do
    bar_stub = double('bar')
    foo(bar_stub)
    expect(bar_stub).to receive(:run_bar).with(a: "test",b: {})
  end
end

我认为这个测试是有道理的,但是当我运行它时,它失败了,说它收到了一个意外的消息,实际上是从实际调用中复制粘贴的。

% rspec test.rb
F

Failures:

  1) foo runs bar
     Failure/Error: bar.run_bar(a: "test",b: {})
       #<Double "bar"> received unexpected message :run_bar with ({:a=>"test",:b=>{}})
     # ./test.rb:9:in `foo'
     # ./test.rb:16:in `block (2 levels) in <top (required)>'

Finished in 0.00812 seconds (files took 0.09453 seconds to load)
1 example,1 failure

Failed examples:

rspec ./test.rb:14 # foo runs bar

如果重要,这里是版本。

% rspec --version
RSpec 3.10

解决方法

哦,我想我刚刚意识到 [√] Flutter (Channel stable,1.22.6,on Microsoft Windows [Version 10.0.19042.1052],locale en-GB) • Flutter version 1.22.6 at C:\flutter • Framework revision 9b2d32b605 (5 months ago),2021-01-22 14:36:39 -0800 • Engine revision 2f0af37152 • Dart version 2.10.5 [√] Android toolchain - develop for Android devices (Android SDK version 30.0.2) • Android SDK at C:\Users\risha\AppData\Local\Android\sdk • Platform android-30,build-tools 30.0.2 • ANDROID_HOME = C:\Users\risha\AppData\Local\Android • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01) • All Android licenses accepted. [√] Android Studio (version 4.0) • Android Studio at C:\Program Files\Android\Android Studio • Flutter plugin installed • Dart plugin version 193.7547 • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01) [√] VS Code (version 1.57.1) • VS Code at C:\Users\risha\AppData\Local\Programs\Microsoft VS Code • Flutter extension version 3.23.0 [√] Connected device (1 available) • sdk gphone x86 (mobile) • emulator-5554 • android-x86 • Android 11 (API 30) (emulator) • No issues found! 必须在代码实际运行之前出现。

expect

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。