обновки
parent
e370d8acba
commit
6468eb6c1c
|
@ -15,7 +15,7 @@ const (
|
|||
|
||||
func TestPipeline(t *testing.T) {
|
||||
// Stage generator
|
||||
g := func(name string, f func(v I) I) Stage {
|
||||
g := func(name string, f func(v interface{}) interface{}) Stage {
|
||||
return func(in In) Out {
|
||||
out := make(Bi)
|
||||
go func() {
|
||||
|
@ -30,10 +30,10 @@ func TestPipeline(t *testing.T) {
|
|||
}
|
||||
|
||||
stages := []Stage{
|
||||
g("Dummy", func(v I) I { return v }),
|
||||
g("Multiplier (* 2)", func(v I) I { return v.(int) * 2 }),
|
||||
g("Adder (+ 100)", func(v I) I { return v.(int) + 100 }),
|
||||
g("Stringifier", func(v I) I { return strconv.Itoa(v.(int)) }),
|
||||
g("Dummy", func(v interface{}) interface{} { return v }),
|
||||
g("Multiplier (* 2)", func(v interface{}) interface{} { return v.(int) * 2 }),
|
||||
g("Adder (+ 100)", func(v interface{}) interface{} { return v.(int) + 100 }),
|
||||
g("Stringifier", func(v interface{}) interface{} { return strconv.Itoa(v.(int)) }),
|
||||
}
|
||||
|
||||
t.Run("simple case", func(t *testing.T) {
|
||||
|
|
|
@ -29,21 +29,22 @@ HTTP API, например, после запуска должно быть до
|
|||
|
||||
### 2) Интеграционное тестирование
|
||||
Необходимо:
|
||||
* создать отдельный пакет для интеграционных тестов;
|
||||
* описать бизнес-сценарии на языке Gherkin в *.feature файлах;
|
||||
* реализовать все шаги сценариев с использованием библиотеки https://github.com/cucumber/godog:
|
||||
при этом шаги могут рассчитывать на то, что запущены в docker-compose и знают endpoint'ы всех
|
||||
сервисов; сценарии работают с HTTP/GRPC API календаря, при необходимости с БД и очередью сообщений;
|
||||
* создать отдельный пакет для интеграционных тестов.
|
||||
* реализовать интеграционные тесты на языке Go; при желании можно использовать
|
||||
[godog](https://github.com/cucumber/godog) / [ginkgo](https://github.com/onsi/ginkgo), но
|
||||
обязательным требованием это **не является**.
|
||||
* создать docker-compose файл, поднимающий все сервисы проекта + контейнер с интеграционными тестами;
|
||||
* расширить Makefile командой `bdd`, `make bdd` будет запускать интеграционные тесты;
|
||||
* расширить Makefile командой `integration-tests`, `make integration-tests` будет запускать интеграционные тесты;
|
||||
**не стоит смешивать это с `make test`, иначе CI-пайплайн не пройдёт.**
|
||||
* прикрепить в Merge Request вывод команды `make integration-tests`.
|
||||
|
||||
Преподаватель может запустить интеграционные тесты в `docker-compose` с помощью команды `make bdd`.
|
||||
В случае успешного выполнения команда должна возвращать 0, иначе 1.
|
||||
Преподаватель может запустить интеграционные тесты с помощью команды `make integration-tests`:
|
||||
- команда должна поднять окружение (`docker-compose`), прогнать тесты и подчистить окружение за собой;
|
||||
- в случае успешного выполнения команда должна возвращать 0, иначе 1.
|
||||
|
||||
### Критерии оценки
|
||||
- Проект полностью запускается и останавливается с помощью `make up` / `make down` - 3 балла
|
||||
- Интеграционные тесты запускаются с помощью `make bdd`. Команда возвращает верный код ответа - 1 балл
|
||||
- Интеграционные тесты запускаются с помощью `make integration-tests`. Команда возвращает верный код ответа - 1 балл
|
||||
- Интеграционные тесты покрывают бизнес сценарии:
|
||||
- добавление события и обработка бизнес ошибок - 2 балла
|
||||
- получение листинга событий на день/неделю/месяц - 2 балла
|
||||
|
|
Loading…
Reference in New Issue