RSpec - 我可以在'be'之后添加一些东西用于此测试吗?

时间:2014-01-01 17:26:55

标签: ruby rspec

此测试有效:

require './9_chess_game'
require './9_chessboard'

describe 'Chess Games' do
  it 'A Game' do
    expect(ChessGame.new).to be
  end
end

class ChessGame
  def initialize                                                    
    @board= ChessBoard.new
  end
end

但我不喜欢'悬空'是怎么读的。 我有什么方法可以validbe_validvalid?true或类似的东西?到目前为止我所有的尝试都失败了。

例如,使用to be_valid生成

undefined method `valid?' for #<ChessGame:0x00000001977650> 

2 个答案:

答案 0 :(得分:1)

按照约定在RSpec中object.to be_method会调用method?上的object

如果尾随让你感到不安,你可以尝试在你试图断言的内容中更加明确。

expect(ChessGame.new).not_to be_nil

expect(ChessGame.new).to be_a(ChessGame)

或者如果您需要ActiveSupport。

expect(ChessGame.new).to be_present

答案 1 :(得分:0)

您可以使用https://www.relishapp.com/rspec/rspec-expectations/v/3-0/docs/built-in-matchers/be-matchers

中描述的等效to be_truthy

但是,在什么情况下你会期望not_to be?这是个问题。