2017-02-20 27 views
0

У меня есть один компонент реакции, и внутри этого компонента есть одна функция. Я хочу написать для этого блок-тест. Ниже приведен пример тестового блока. имя функции getNewGroupNameЕдиница измерения функции компонента в реакциях с использованием кармы и жасмина

describe("CreateGroupName component",() => { 

     it("Correct Copy name should be generated for first copy",() => { 
      component = ReactTestUtils.renderIntoDocument(< CreateGroupName reactor = { 
       reactor 
      } > < /CreateGroupName>); 

      expect(component.getNewGroupName("SampleGroupName")).tobe("SampleGroupName - Copy(1)") 
      }); 

     }); 

Но когда я бегу тестовых единиц я получаю ниже ошибки

TypeError: не определено не конструктор (оценка «e.getNewGroupName („SampleGroupName“)»)

Изучив объект с помощью отладчика, я могу увидеть только свойство ниже этого объекта.

enter image description here

Я также пытался писать выше тест с использованием фермента библиотеки. Но оба дают мне тот же объект в результате.

it("Correct Copy name should be generated for first copy",() => { 
      const wrapper = enzyme.mount(<CreateGroupName reactor={reactor}></CreateGroupName>); 
      const inst = wrapper.instance(); 
      expect(inst.getNewGroupName('SampleGroupName')).toBe("SampleGroupName - Copy(1)"); 
     }); 

Вот мой компонент

enter image description here

трассировки стека, как показано ниже

"TypeError: t.getNewGroupName is not a function 
    at Object.<anonymous> (http://localhost:9876/base/app/spec/webpack.loader.js:96:18873) 
    at attemptSync (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1886:24) 
    at QueueRunner.run (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1874:9) 
    at QueueRunner.execute (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1859:10) 
    at Spec.queueRunnerFactory (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:697:35) 
    at Spec.execute (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:359:10) 
    at Object.fn (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:2479:37) 
    at attemptAsync (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1916:24) 
    at QueueRunner.run (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1871:9) 
    at http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1898:16" 
+0

Как выглядит компонент CreateGroupName? Обычно это происходит, когда он не возвращает что-то должным образом. –

+0

Как насчет '.toBe()' вместо '.tobe()'? –

+0

Я исправил это, но все же он не работает – Sachin

ответ

0

ReactTestUtils.renderIntoDocument() предоставляет узел DOM, представляющий выход компонента после того, как она делает , См. https://facebook.github.io/react/docs/test-utils.html#renderintodocument

Похоже, вы пытаетесь вызвать getNewGroupName(), которая является функцией на вашем компоненте React, а не методом на удаленном узле DOM.

+0

Есть ли способ проверить функции компонента? Или это невозможно – Sachin

+0

Взгляните на Jest (https://facebook.github.io/jest/), чтобы помочь модулю протестировать компоненты React. Также посмотрите на Enzyme (http://airbnb.io/enzyme/) для оказания помощи в рендеринге компонента, а затем отстаивайте полученный результат. Затем вы можете использовать renderedresult.instance(). Yourfunction() для вызова методов на вашем компоненте. Посмотрите здесь: https://github.com/airbnb/enzyme/issues/208 –

+0

Если вы проверите мой второй образец тестового примера, я делаю то же самое, и он не работает – Sachin

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

  • Нет связанных вопросов^_^