2015-07-08 2 views
14

fdescribe() и fit() отлично подходят для снижения шума при работе над подмножеством тестов. Иногда я забываю поменять их на describe()/it(), прежде чем слить свою ветку в мастер. (Это нормально, если они будут работать в отдельном разделе во время работы над кодом, т. Е. Проверка для предварительной фиксации не будет работать для меня.)Отключить fdescribe() и fit() от жасмина на основе среды

Моя среда CI - это Кодировка. Есть ли решение этой проблемы, которая не завершила бы тесты в Codeship, если бы она столкнулась с целенаправленными методами?

Использование чего-то типа no-focused-tests будет в порядке. Любая идея, как включить это правило в качестве ошибки в Codeship и отключить его локально?

+2

'не-сфокусированного tests' не спас меня так часто, прежде чем :). Как насчет чего-то вроде крючка с предварительным слиянием? (http://stackoverflow.com/questions/19102714/how-would-i-write-a-pre-merge-hook-in-git) – alecxe

+0

К сожалению, слияние происходит на GitHub, поэтому, если оно не может быть вызвано как правило на серверы GitHub, я не думаю, что это сработает. Спасибо за идею, хотя! +1 – Guy

+2

Я запускаю jshint как часть моей сборки, он ловит такого рода вещи. –

ответ

2

Использование чего-то вроде не-сфокусированных испытаний было бы в порядке. Любая идея, как включить это правило в качестве ошибки в Codeship и отключить его локально?

Вы можете использовать комбинацию переменных окружения и переосмысление fdescribe/прилегание глобальных функций:

  1. npm i --save cross-env

  2. package.json:

    "scripts": { 
        "test": "jasmine", 
        "test-safe": "cross-env FOCUSED_TESTS=off jasmine" 
    }, 
    
  3. disableFocusedTestsIfNecessary. js (включительно aft эр жасмин определяет его глобалам):

    if (process.env.FOCUSED_TESTS === "off") { 
        console.log("Focused tests must be off"); 
        global.fdescribe = global.fit = function() { 
        throw new Error("fdescribe and fit are disabled in this environment"); 
        }; 
    } 
    else { 
        console.log("Focused tests enabled"); 
    } 
    
  4. Телль codeship запустить npm run test-safe вместо npm run test

2

Для тех, кто заинтересован, если вы используете жасмин и eslint, вы можете использовать этот плагин для обеспечения без сфокусированных тестов: https://github.com/tlvince/eslint-plugin-jasmine.

  1. Сперва установить eslint глобально npm install -g eslint.
  2. Затем установите библиотеку eslint-plugin-jasmine npm install --save-dev eslint-plugin-jasmine.
  3. Создать .eslintrc файл, который будет выглядеть примерно так:

    { 
        "rules": { 
        "semi": 2 
        }, 
        "plugins": ["jasmine"], 
        "env": { 
        "jasmine": true 
        }, 
        "extends": "plugin:jasmine/recommended", 
    } 
    
  4. Тогда вы готовы к запуску линта eslint -c ./.eslintrc app.js

+1

Хотя эта ссылка может ответить на вопрос, лучше включить основные части ответа здесь и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится.- [Из обзора] (/ review/low-quality-posts/13590911) – RamenChef

+0

Звучит неплохо, спасибо за совет. – TheNastyOne

Смежные вопросы