Skip to content

Сделано #15 Реализовать интеграционное тестирование методов Web Api#24

Merged
ExM merged 0 commit into
ExM:masterfrom
solovyevsa:master
Jun 1, 2015
Merged

Сделано #15 Реализовать интеграционное тестирование методов Web Api#24
ExM merged 0 commit into
ExM:masterfrom
solovyevsa:master

Conversation

@solovyevsa
Copy link
Copy Markdown
Contributor

  1. Добавлена возможность интеграционного тестирования методов Web Api - Fixes Реализовать интеграционное тестирование методов WebAPI #15
  2. Добавлены интеграционные тесты
  3. Исправлено поведение при создании нового счетчика - Fixes При создании счетчика возвращается 1. Должен возвращаться 0. #5 - в данном случае фикс взял у AleXKarasev. В его версии уже исправлено поведение метода Bumping. Без этого исправления интеграционные тесты падают.
  4. Исправлен тест контроллера для проверки нового поведения

@ExM
Copy link
Copy Markdown
Owner

ExM commented May 19, 2015

Поторопился брать фиксы в соседних запросах. ;)
Тперь бери от туда и мои замечания.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Для разбора JSON лучше воспользоваться Newtonsoft.Json

@ExM
Copy link
Copy Markdown
Owner

ExM commented May 27, 2015

Текущие замечания, полагаю, не вызовут затруднений.

После этого:

  • Ветке с запросом следует сделать rebase на последнее сотояние master.
  • Провести interactive rebase и собрать историю в 3 коммита.
    • добавление тестирования
    • счет ревизий с нуля
    • переименование NextNumber

Далее я смогу принять ваш запрос в master и дать оценку.
Спасибо, за участие!

@solovyevsa
Copy link
Copy Markdown
Contributor Author

Пересобрал историю коммитов.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это присваивание не используется.

@ExM
Copy link
Copy Markdown
Owner

ExM commented May 29, 2015

Потерялось создание стартовой учетки.

@ExM
Copy link
Copy Markdown
Owner

ExM commented May 29, 2015

Поправь комментарии у коммитов.
В них следует писать только то, что сделано.

@solovyevsa
Copy link
Copy Markdown
Contributor Author

Стартовая учетка создается. Иначе тесты бы не прошли.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В каком случае в этой точке код может обнаружить insertFailed == false?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Во всех случаях, кроме одного - когда будет сгенерировано исключение MongoDuplicateKeyException, только тогда insertFailed != false

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

в секции try есть выход из метода => выполнение кода может пробраться мимо catch (MongoDuplicateKeyException) ТОЛЬКО в случае перехвата MongoDuplicateKeyException

insertFailed можно убрать

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Насчет выхода из метода - тут согласен. Но я посчитал, что повторная вставка нам нужна только когда MongoDuplicateKeyException брошено, а все остальные случаи нас не интересуют.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Кстати, MongoDuplicateKeyException в методе InsertOneAsync не выбрасывается.
Корректная обработка двойной вставки здесь должна выглядеть так

catch (MongoWriteException ex)
{
    if (ex.WriteError.Category != ServerErrorCategory.DuplicateKey)
        throw;
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Действительно, в документации написано про MongoDuplicateKeyException, а если покопаться в исходниках драйвера то в InsertOneAsync кидается throw MongoWriteException.FromBulkWriteException(ex);

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"повторная вставка нам нужна только когда MongoDuplicateKeyException брошено, а все остальные случаи нас не интересуют"

В случае других исключений мы тоже выходим из метода, ведь они не перехватываются.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Согласен. Переделал.

@ExM
Copy link
Copy Markdown
Owner

ExM commented May 30, 2015

А к тестам претензий нет, только приложение не рабочее.
MongoDBStorage.SetUp() вызывается только в тестовом коде.
При старте сайта на пустой БД, отсутствует первый пользователь и индекс на коллекции.

@ExM ExM merged commit bfab200 into ExM:master Jun 1, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants