2016-06-20 74 views
-1

如何在Rspec中使用vanilla assert在Rspec中使用「vanilla」斷言?

require 'rspec' 

describe MyTest do 
    it 'tests that number 1 equals 1' do 
    assert 1 == 1 
    end 
end 

的錯誤,我得到:

undefined method `assert' for 
#<RSpec::ExampleGroups::Metadata::LoadFile:0x00000002b232a0> 

請注意,我不想用assert_equaleqshould或其他魔神。

+0

爲什麼你需要這個?另外,我認爲'assert'來自['Unit tests'](http://ruby-doc.org/stdlib-2.0.0/libdoc/test/unit/rdoc/Test/Unit/Assertions.html),而不是'RSpec'。 – Wikiti

+0

@Wikiti因爲'assert'感覺比其他東西更優雅IMO – Pithikos

+0

爲什麼你不使用minitest呢,如果你不想要Rspec的功能? https://github.com/seattlerb/minitest#specs – sevenseacat

回答

2

你可以做到這一點很容易地:

require 'rspec/core' 
require 'test/unit' 

describe 'MyTest' do 
    include Test::Unit::Assertions 
    it 'tests that number 1 equals 1' do 
    assert 1 == 2 
    end 
end 

(如果你想能夠運行做ruby foo.rb測試,那麼你就必須需要rspec/autorun太)。這牽扯到所有這些斷言。如果你真的不想要任何額外的斷言,只需定義你自己的assert方法,當測試失敗時會引發異常。

相反,您可以通過要求rspec/expectations輕鬆使用rspec之外的rspec期望語法 - rspec3被設計爲模塊化。

+0

謝謝!爲我節省了一些頭痛。 – Pithikos