2016-11-14 3 views
1

Есть ли способ написать больше тестов с данными с Jestjs?Проверенные данные Jestjs-тесты

я придумал что-то вроде этого:

it('assignments and declarations',() => { 

    testCases.forEach(function (testCase) { 
     const slx = fs.readFileSync(testDirectory + 'slx/' + testCase.slx, 'utf-8'); 

     const document = compiler.parse(slx); 

     const lmsGenerator = new LMSGenerator(document); 
     const lms = lmsGenerator.generate(); 

     const expected = fs.readFileSync(testDirectory + 'lms/' + testCase.lms, 'utf-8'); 

     expect(expected).toBe(lms); 
    }); 
}); 

Я прочитал вход и ожидаемый результат из файлов. Файлы (и связь между входом и выходом) сохраняются в массиве с объектами. Проблема в том, что я потерял определенные сообщения об ошибках, которые у меня были с несколькими функциями it().

Есть ли способ сделать это лучше? Или использовать индивидуальное сообщение для случая, когда ожидаемый вызов завершится неудачей?

ответ

3

Вы создаете блок it для каждого тестового примера и объединяете их в блок describe. Теперь вы получите сообщение об ошибке для каждого сломанного случая, и тест не прекратится после первого сбоя.

describe('assignments and declarations for',() => { 
    testCases.forEach(function (testCase) { 
    it(`case ${testCase}`,() => { 
     const slx = fs.readFileSync(testDirectory + 'slx/' + testCase.slx, 'utf-8'); 
     const document = compiler.parse(slx); 
     const lmsGenerator = new LMSGenerator(document); 
     const lms = lmsGenerator.generate(); 
     const expected = fs.readFileSync(testDirectory + 'lms/' + testCase.lms, 'utf-8'); 
     expect(expected).toBe(lms); 
    }); 
    }); 
}); 
+0

Я попробовал это и получил «Ваш комплект тестов должен содержать хотя бы один тест». Когда я инкапсулирую testCases.forEach вызов с «фальшивым» блоком, внутренний блок никогда не сообщит об ошибке инкапсуляции. – FDeitelhoff

+0

Вот скрипка с примером, использующим жасмин: https://jsfiddle.net/3VuGs/402/. Поскольку шутка использует жасмин, и я сделал то же самое в своем тестовом наборе тестовых тестов, я понятия не имею, почему это не работает для вас. Можете ли вы добавить журналы внутри блока 'it', чтобы узнать, запускает ли jest тесты. –

+0

Интересно, что это работает на вас. Я не могу заставить его работать в моей среде. Но я не уверен, что все настроено правильно. На данный момент я использую WebStorm с модулем jest jpm. Я запускаю тестовый тест jest с простой записью в файле package.config: «scripts»: { «test»: «jest»,}. Может быть, это проблема по сравнению с вашим решением? – FDeitelhoff

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