Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 未达到RSpec消息期望值_Ruby_Rspec - Fatal编程技术网

Ruby 未达到RSpec消息期望值

Ruby 未达到RSpec消息期望值,ruby,rspec,Ruby,Rspec,我有以下代码: require_relative '../spec_helper' describe PaymentProcessor do before(:each) do @processor = PaymentProcessor.new end describe '#process' do context 'payment accepted, sha digest valid' do it 'should return true and have

我有以下代码:

require_relative '../spec_helper'

describe PaymentProcessor do
  before(:each) do
    @processor = PaymentProcessor.new
  end

  describe '#process' do
    context 'payment accepted, sha digest valid' do
      it 'should return true and have no errors' do
        GamePlayResult.stub(:new).and_return(mock('GamePlayResult'))
        ticket = stub_model(Ticket, player: stub_model(Player, has_funds?: true))
        Ticket.stub(:find).and_return ticket
        game = stub_model(Game, play: ticket, tolerance: 10)
        query = 'orderID=1060&STATUS=5&PAYID=17314217&NCERROR=0&SHASIGN=E969563B64ED6F93F5DC47A86B1B04DFC884B4A7'
        @processor.process(query, game).should_not be_false
        game.should_receive(:play)
        @processor.error.should equal nil
      end
    end
  end
end
除了
game.should_receive(:play)
之外的所有断言都得到满足。然而,我知道正在调用
:play
,因为a)如果不是,其他断言将失败;b)如果我不存根它,我将收到一个意外的消息错误


提前感谢。

这里很难看到实际调用了什么代码,但从那里的内容判断,我假设是这一行:

@processor.process(query, game).should_not be_false
如果是这样的话,那么问题是您的期望是在您运行代码之后出现的,这是行不通的。移动
游戏。应在
@处理器上方的
行上接收(:play)
行。进程(查询,游戏)
行应通过:

  it 'should return true and have no errors' do
    GamePlayResult.stub(:new).and_return(mock('GamePlayResult'))
    ticket = stub_model(Ticket, player: stub_model(Player, has_funds?: true))
    Ticket.stub(:find).and_return ticket
    game = stub_model(Game, play: ticket, tolerance: 10)
    query = 'orderID=1060&STATUS=5&PAYID=17314217&NCERROR=0&SHASIGN=E969563B64ED6F93F5DC47A86B1B04DFC884B4A7'
    game.should_receive(:play)
    @processor.process(query, game).should_not be_false
    @processor.error.should equal nil
  end

在调用将执行该期望的代码之前,必须设置RSpec期望值

因此:

@processor.process(query, game).should_not be_false
game.should_receive(:play)
应改为:

game.should_receive(:play)
@processor.process(query, game).should_not be_false