Я бы пошел со скучным старым RSpec или Test :: Unit.Чтобы получить 80% тестового покрытия с 20% усилий, просто проведите тестирование под своим пользовательским интерфейсом.100% тестовое покрытие не является целью, работающее программное обеспечение.Ваш тест проверяет "бизнес-правила" для приложения, остальное - это пользовательский интерфейс с меньшим риском.
Предположим, вы пишете приложение для оценки платежей по кредиту.
Ваш тест будет выглядеть примерно так:
describe LoanCalculator do
it "Estimates monthly payments given a loan amount, interest rate, and term" do
LoanCalculator.new.estimate_payment(10000, 5, 48).should == 230.00
end
end
Как только вы узнаете, что ваше LoanCalculator
работает, вы просто пишете свое приложение Sinatra, чтобы делегировать его.
get '/loan_calculator' do
@loan_amount = params[:amount]
@rate = params[:rate]
@term = params[:term]
@result = LoanCalculator.new.estimate_payment(@loan_amount, @rate, @term)
erb :loan_calculator_results
end
В более сложной системе у вас, очевидно, будет гораздо большев вашей тестируемой системе, но поддерживая тонкий пользовательский интерфейс и всю логику в SUT, вы получите огромные выгоды без всех хлопот более сложных структур.
Надеюсь, что это поможет.
Brandon