Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add eventually method && a bit refactor #103

Merged
merged 2 commits into from
Dec 29, 2024
Merged

Conversation

korableg
Copy link
Contributor

@korableg korableg commented Dec 23, 2024

Привет, начал писать тесты с использованием фреймворка и обнаружил отсутствие необходимого метода Eventually в provider.Asserts. Метод полезен например если проверяешь асинхронщину или ждешь какого-то события (например кафка).

Также немного отрефакторил код, тк я хочу добавлять к стандартному интерфейсу Asserts еще и свои методы композицией, например метод с проверкой количества публичных полей в структуре

for example:

type Asserts interface {
    provider.Asserts
    PublicCount(object any, want int, msgAndArgs ...any)
}


type asserts struct {
    provider.Asserts
}

func (a *asserts) PublicCount(object any, want int, msgAndArgs ...any) {
    dec  := a.(interface {
		Decorate(name string, assertFunc func(t wrapper.TestingT) bool, params []*allure.Parameter, msgAndArgs ...interface{})
	})
    dec.Decorate("PublicCount", func(t wrapper.TestingT) bool {
        return publicCount(object) == want
    }, nil)
}

Сейчас такую композицию проблематично сделать не повторяя код фреймворка, а именно метода withNewStep.

Чтобы упроситить работу с ним я добавил метод Decorate, метод резолвится только через интерфейс, по умолчанию скрытый.

Таким образом это придаст гибкости фреймворку для локальных расширений.

provider.Step(step)
}()
result = assert(t)
func (h *assertHelper) WithNewStep(t TestingT, provider Provider, assertName string, assert func(t TestingT) bool, params []*allure.Parameter, msgAndArgs ...interface{}) bool {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

небольшой рефакторинг, defer здесь не нужен

@@ -11,30 +11,26 @@ type Provider interface {
}

type assertHelper struct {
required bool
prefix string
Copy link
Contributor Author

Choose a reason for hiding this comment

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

добавил prefix вместо require, по сути нам эту перенеменную нужно определять единожды при создании

@korableg korableg force-pushed the master branch 2 times, most recently from 9480337 to 5a1f71b Compare December 23, 2024 06:15
@korableg
Copy link
Contributor Author

@koodeex привет, посмотри пр)

@koodeex
Copy link
Collaborator

koodeex commented Dec 23, 2024

@koodeex привет, посмотри пр)

поправь линт и экзамплы плиз))

@korableg
Copy link
Contributor Author

@koodeex привет, посмотри пр)

поправь линт и экзамплы плиз))

линтер поправил, видимо в 1.17.8 отсутствует atomic.Int32;
actions/upload-artifact апнул до v4

нужен аппрув чтоб еще раз пайп прогнать

@korableg
Copy link
Contributor Author

@koodeex привет, посмотри пр)

поправь линт и экзамплы плиз))

еще разочек, теперь должен пройти линтер

@koodeex koodeex merged commit 76a7ab8 into ozontech:master Dec 29, 2024
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants