<commit_before>---
layout: post
title: Test-Driven Development By Example - Kent Beck. TDD паттерны. Evident Data.
excerpt: "Как вы представляете данные для теста? Включая ожидаемый и актуальный результаты, пытаясь сделать их связь между собой очевидной."
categories: [TDD, test-driven development, testing]
comments: true
---

> При написании тестов мы могли бы перейти в режим расчета. Мы могли бы вычислить или рассчитать длинные значения. Не делайте этого, это может запутать читателя в отношении бизнес-логики.

Вы пишете тесты для читателя, не для компьютера. Ведь кто-нибудь потом будет в ближайшие десять лет спрашивать себя - “Черт возьми, что же имел ввиду этот парень?”. Вы бы хотели оставить как можно больше подсказок, особенно если этот расстроенный читатель будете вы.

Например, если мы конвертируем одну валюту в другую, мы берем 1.5% от транзакции. Если курс обмена валют USD -> GBP равен 2:1, тогда если мы меняем 100$ мы должны получить 50 GBP и минус 1.5% от транзакции = 49.25 GBP. 

Мы бы могли написать этот тест таким образом:

{% highlight java %}
Bank bank = new Bank()
bank.addRate(“USD”, ”GBP" STANDART_RATE)
bank.commission(STANDART_COMMISSION)
Money result = bank.convert(new Note(100, “USD”), "GBP”)
assertEquals(new Note(49.25, “GBP”), result)
{% endhighlight %}

Либо мы могли бы попробовать сделать вычисление более явным:
<commit_msg>Update 2017-08-08-Evident-data.markdown<commit_after>---
layout: post
title: Test-Driven Development By Example - Kent Beck. TDD паттерны. Evident Data.
excerpt: "Как вы представляете данные для теста? Включая ожидаемый и актуальный результаты, пытаясь сделать их связь между собой очевидной."
categories: [TDD, test-driven development, testing]
comments: true
---

<b>Описание:</b> При написании тестов мы могли бы перейти в режим расчета. Мы могли бы вычислить или рассчитать длинные значения. Не делайте этого, это может запутать читателя в отношении бизнес-логики.

### Обсуждение

Вы пишете тесты для читателя, не для компьютера. Ведь кто-нибудь потом будет в ближайшие десять лет спрашивать себя - “Черт возьми, что же имел ввиду этот парень?”. Вы бы хотели оставить как можно больше подсказок, особенно если этот расстроенный читатель будете вы.

Например, если мы конвертируем одну валюту в другую, мы берем 1.5% от транзакции. Если курс обмена валют USD -> GBP равен 2:1, тогда если мы меняем 100$ мы должны получить 50 GBP и минус 1.5% от транзакции = 49.25 GBP. 

Мы бы могли написать этот тест таким образом:

{% highlight java %}
Bank bank = new Bank()
bank.addRate(“USD”, ”GBP" STANDART_RATE)
bank.commission(STANDART_COMMISSION)
Money result = bank.convert(new Note(100, “USD”), "GBP”)
assertEquals(new Note(49.25, “GBP”), result)
{% endhighlight %}

Либо мы могли бы попробовать сделать вычисление более явным:

{'fraction_non_alphanumeric': 0.08044333214158027, 'fraction_numerical': 0.018591347872720772, 'mean_word_length': 4.79296066252588, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 8, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6705118', 'n_tokens_mistral': 1159, 'n_tokens_neox': 1245, 'n_words': 373}