2017-01-05 2 views
0

Меня попросили написать несколько тестов, чтобы подтвердить, что текст содержится в файле PDF. Я столкнулся с материалом для чтения PDF-файлов, который хорош для рендеринга текста из файла, за исключением того, что вывод не слишком хорош. Например, у меня есть фрагмент текста, который должен читать Date of first registration of the product, но читатель PDF видит это как Date offirstregistrationoftheproduct. Таким образом, когда я запускаю свое утверждение, он терпит неудачу из-за расстояния текста.PDF Reader Cucumber Ruby

Мой код:

expected_text = 'Date of first registration of the product' 

file = File.open(my_pdf, "rb") 
    PDF::Reader.open(file) do |reader| 
    reader.pages.each do |page| 
     expect(page).to have_text expected_text 
    end 

В результате ожидание RSpec не встретил ошибку.

Есть ли способ, которым я могу правильно отформатировать этот текст, чтобы мое утверждение могло его прочитать?

+0

Вы предоставили образец PDF, содержащий данный текст? – Stefan

+0

К сожалению, из-за чувствительности, хотя и тестовых данных, мне не разрешат загружать копию :-( – Tom

+0

Не можете ли вы создать PDF-файл только с текстом? Я не уверен, как помочь вам без какого-либо фактического ввода , – Stefan

ответ

0

Объект страницы Reader не является текстом. Если вы хотите получить текст из pdf, вы можете использовать page.text. Использование регулярного выражения может решить вашу проблему.

Попробуйте что-нибудь вроде ниже.

expected_text = 'Date of first registration of the product' 

file = File.open(my_pdf, "rb") 
    PDF::Reader.open(file) do |reader| 
    reader.pages.each do |page| 
     expect(page.text.match(/#{expected_text}/)).to be true 
    end