Простые юнит тесты?

Почему юнит-тесты такие неудобные для написания?!

Может быть кто-то видел более простые правила описания тестов, например что-то типа такого:

/**
@test(1,2) = 3
@test(2,3) = 5
**/
function foo(x,y){
    return x+y
}


/**
@test() = 3 #this={x:2,y:3}
@test() = 5 #this=url(/src/test/method1.json)
**/
function method1(){
    return this.x+this.y
}
  • Вопрос задан
  • 4302 просмотра
Решения вопроса 1
@egorinsk
Я где-то видел уже тесты в аннотациях. Как я понимаю, они становятся неудобными, как только вам надо тестировать функции чуть посложнее функции сложения (кстати, посылаю лучи поноса всем авторам статей по тестированию, которые не могут придумать хороший убедительный пример и тестируют белиберду вроде функций сложения).

Конкретно в вашем случае, а то ли вы тестируете, что нужно? Не занимаетесь ли вы случайно как раз тестированием простого и очевидного кода из нескольких строчек, который и тестировать нет смысла?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@XimikS
> более простые
по сравнению с чем?
Вообще, есть хорошая связка Mocha и Chai.

Для Rails, если кому интересно, юзать под Коначой:)
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
pivotal.github.com/jasmine/ — как мне кажется лучше ничего нету.
Ответ написан
@AlexNomad Автор вопроса
Спасибо за ответ.

Действительно часто мысли о подобном способе тестирования у меня возникают когда я пишу много коротких функций, часто в библиотеках. При этом хочется сразу проверить ее правильность, в том числе на граничных данных

    /**
     * Возвращает точку между двумя заданными
     * @param start Point
     * @param end Point
     * @param koef Number (optional=0.5) коэффициент расстояния (0=start, 1=end, 0.5=середина)
     * @return Point
     * @test(new Point(0,0), new Point(10,10), 0) = {x:0, y:0}
     * @test(new Point(0,0), new Point(10,10), 1) = {x:10, y:10}
     * @test(new Point(0,0), new Point(10,10)) = {x:5, y:5}
     */
    function getMiddlePoint(start, end, koef) {
        if(koef === undefined) koef=0.5;
        return new Point ( end.x * koef + start.x * (1 - koef), end.y * koef + start.y * (1 - koef));
    }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы