Я пытаюсь попрактиковаться в использовании двойников и насмешек в моих тестах Rspec, чтобы изолировать мои зависимости. На данный момент я делаю простую банковскую программу, которая имеет 2 класса - класс Account, отвечающий за логику транзакции, такую как обновление баланса, кредитование, дебетование и т. Д. У меня также есть класс Statement, отвечающий за форматирование выписки по счету на основе история транзакций
Класс Моя учетная запись инициализируется следующим образом:
def initialize(statement = Statement.new)
@balance = 0.00
@credit = ''
@debit = ''
@date = Date.today.strftime('%d/%m/%Y')
@transaction = []
@statement = statement
end
Класс My Statement инициализируется следующим образом:
def initialize
@display = []
end
(Массив отображения - это массив массивов транзакций, которые являются всеми транзакциями, которые произошли в этой конкретной учетной записи).
В моем файле Statement_spec.rb я хочу использовать двойной класс класса Account. Как настроить двойной аккаунт, в котором уже есть выписка с полным отображением? На данный момент у меня есть:
account = double(Account.new(statement = statement))
но я хочу убедиться, что на дисплее есть транзакции, чтобы я мог протестировать методы класса Statement с поддельной, работающей учетной записью?
Извините, если я не объяснил это очень четко. Изо всех сил пытаясь заставить меня высмеивать насмешки, поэтому любая помощь действительно приветствуется! Спасибо :)
UPDATE:
Метод, который я тестирую, таков:
def format
puts 'date || credit || debit || balance'
@display.map do |transaction|
return @display.join(' || ')
end
end
А текущий тест такой:
describe '#format' do
it 'prints the statement as a table' do
account = Account.new
account.deposit(15.00)
account.complete_transaction
expect(account.statement.format).to eq Date.today.strftime('%d/%m/%Y') + ' || 15.00 || || 15.00'
end
end