2014-01-27 4 views
0

У меня есть этот метод:методы тестирования, которые возвращают маркеры или случайные значения Rspec

def encrypt(token) 
    Digest::SHA1.hexdigest(token.to_s) 
    end 

Я хочу написать тест. Но что я должен проверить? Единственное, что я знаю, это то, что он не должен возвращать значение nil. Но это может быть ложным положительным, нет?

Какой лучший способ проверить, что encrypt действительно шифрует?

describe 'encrypt' do 
    it "it returns an ecrypted token" do 
     expect(subject.encrypt("hello")).not_to eq nil 
    end 
    end 

ответ

2

Вы хотите проверить ожидаемое поведение с известным результатом. В поисках примера я столкнулся с http://en.wikipedia.org/wiki/SHA-1#Example_hashes:

describe 'encrypt' do 
    it "it returns an ecrypted token" do 
    text = 'The quick brown fox jumps over the lazy dog' 
    hex = '2fd4e1c6 7a2d28fc ed849ee1 bb76e739 1b93eb12' 
    expect(subject.encrypt(text)).to eq hex 
    end 
end 
1

Значение хэша SHA1 обычно составляет 40 символов. Вы можете проверить размер возвращаемой строки:

describe 'encrypt' do 
    it "it returns an ecrypted token" do 
    subject.encrypt("hello").size.should eq(40) 
    end 
end 
Смежные вопросы