2017-06-27 24 views
2
require_relative File.expand_path '../../test_helper',__FILE__ 

FactoryGirl.define do 
    factory :task do 
    name "testinga again" 
    finished 0 
    end 
end 


class TaskTest < Test::Unit::TestCase 

    include FactoryGirl::Syntax::Methods 

    test "should not save tasks without title" do 
    task = Task.new 
    assert_equal false, task.save 
    end 

    test "should save tasks" do 
    task = FactoryGirl.create(:task) 
    assert_equal attributes_for(:task), task 
    end 

end 

タスクの作成プロセスをユニットテストしたい。 should save taskタスクでは、値をdbに保存しました。保存された値が実際にdbに送信された値と等しいかどうかをテストします。それを行うにはどうすればいいのですか?データをdbに保存するための書き込みユニットテスト

答えて

2

まず、業界をリードするエンジニアが既にテストしたものをチェックしようとしています。 ActiveRecordプロジェクトが表示されている場合は、すべてのAPIが厳密にテストされています。だから私はこれをスキップすることをお勧めします。

しかし、あなたの目的がUnitTestingを学ぶことであれば、あなたはそれを間違ってやっています。ユニットテストはブラックボックステストです。あなたのケースでは、Databaseのような他のクラスやサードパーティのソフトウェア/サービスを呼び出したり呼び出すことはできません。

これを統合テストといいます。保存された値が、私は本当にデシベルに に送られたものに等しい場合


は私がテストしたい

その簡単。

test "should save tasks" do 
    task = FactoryGirl.build(:task, name: 'John') 
    task.save 
    assert_equal 'John', task.reload.name 
    end 

reloadは、データベースからレコードを取得します。

+0

私が 'FactoryGirl.build(:task、name: 'John、finished:0')'をテストしたいのですが? – Raaz

関連する問題