如何为标量值函数创建模拟测试用例

时间:2017-04-11 12:47:09

标签: ruby ruby-on-rails-4 rspec rspec-rails

我正在调用一个标量值函数,但很难弄清楚如何为它创建模拟测试用例。

我只想创建一些模拟测试用例,例如

  1. 函数成功返回一个值
  2. 函数返回转换错误
  3. 我在下面尝试了一些东西但是在这里我必须调用实际的函数,我不想这样做,因为如果数据库改变它会导致测试用例失败,因此想要模拟案例。

    require 'rails_helper'
    
    describe ScalarSqlFunction::Base do
      describe '#exec' do
        let!(:success) { 0 }
    
        context 'with valid input' do
          let(:response) {
            ScalarSqlFunction::CalcTotal(105)
          }
          before do
            allow(response)
              .to receive(return_code).and_return(success)
          end
          it 'returns success' do
            expect(response.return_code).to eq(success)
          end
        end
      end
    end
    

1 个答案:

答案 0 :(得分:0)

您可以为ScalarSqlFunction :: CalcTotal

创建模拟对象
require 'rails_helper'

describe ScalarSqlFunction::Base do
describe '#exec' do
  let!(:success) { 0 }

context 'with valid input' do
  let(:response) { double('Response') }
  before do
    allow(response)
      .to receive(return_code).and_return(success)
  end
  it 'returns success' do
    expect(response.return_code).to eq(success)
  end
end
end
end