2016-05-09 12 views
0

Im using findRenderedComponentWithType, чтобы убедиться, что есть ошибка, и я использую chai's assert.throws, но он не работает.ReactTestUtils findRenderedComponentWithType ошибка бросания, не определяемая chai?


прежде всего:

TestUtils.findRenderedComponentWithType документация:

expects there to be one result and returns that one result, or throws exception if there is any other number of matches besides one.


Когда я использую функцию, Im получая ошибку (как и ожидалось, и правильно). Однако я не могу утверждать это правильно с chai: Я пробовал assert.throws(TestUtils.findRenderedComponentWithType(element, component), /(Error)/). Но это говорит тест не пройден, несмотря на то, что я получаю сообщение об ошибке:

Error: Did not find exactly one match for componentType:function (props, context, updater) { 
[...] 
} 

ответ

1

Проверить подпись бросков, он ожидает, что функция, а не ошибка/объекта (который является результатом findRenderedComponentWithType http://chaijs.com/api/assert/#method_throws.

Так что вы хотите сделать что-то вроде

cons fn =() => TestUtils.findRenderedComponentWithType(element, component) 
assert.throws(fn) 
+0

в первую очередь это работает спасибо. Я на самом деле читать, что раньше, но я не понимаю, метод и функция отличается по определению, но я до сих пор Dont действительно видеть, как это сделал diff. chai просто запускается в первом параметре, а затем проверяет, что он выводит? это как-то связано с обратным вызовом? – user308553

+1

Ваша первоначальная реализация не проходила в функции (или методе). Это происходит с тем, что вещи выполняются. «TestUtils.findRenderedComponentWithType (element, component)» запускается первым и возвращает объект Component или выдает ошибку. Так что действительно вы проходите в одном из этих типов. Подумайте, как это можно реализовать. Он выполняет функцию, а затем завертывает ее в блок try/catch THEN. Принимая во внимание, что вы выполняли его ТОЛЬКО за кулисами, он обертывался, но к тому времени уже слишком поздно; ошибка была сброшена – ken4z

+1

В качестве примечания, вы можете проверить https://github.com/airbnb/enzyme. Я обнаружил, что ReactTestUtils lib немного больно работать (особенно эти имена методов), так что я начал писать свои собственные, прежде чем Enzyme стал доступен. – ken4z