2016-03-01 3 views
15

Я работаю над созданием единичных тестов реакционных компонентов с использованием мокки, фермента. Ниже приведен пример компонента.Mocha, Enzyme: Единичное тестирование пользовательских функций в реагентном компоненте с использованием фермента

foo.js

class Foo extends React.Component { 
    customFunction=() => { 
    } 

    render() { 
     return (<div className={this.props.name}/>); 
    } 
} 

А вот файл тестирования.

Foo-Test.js

import React from 'react'; 
import { expect } from 'chai'; 
import { shallow, mount, render } from 'enzyme'; 
import Foo from '../src/Foo'; 

describe("A suite", function() { 
    it("contains spec with an expectation", function() { 
     expect(shallow(<Foo />).contains(<div className="foo" />)).to.equal(true); 
    }); 

    it("contains spec with an expectation", function() { 
     expect(shallow(<Foo />).is('.foo')).to.equal(true); 
    }); 
}); 

Все хорошо. но я не понимаю, как модульное тестирование customFunction в foo.js, когда мы используем фермент

ответ

26

Лучший ответ на этот вопрос действительно зависит от того, что это такого, что customFunction на самом деле делает ...

Вы можете вызовите функцию, как это:

wrapper.instance().customFunction('foo', 'bar'); 

Если это функция, которая определяет состояние на самой инстанции, и, таким образом, влияет на то, что оказанная вывод выглядит, вы можете позвонить .update() а

wrapper.instance().customFunction('foo', 'bar'); // uses setState internally 
wrapper.update(); // updates render tree 
// do assertions on the rendered output 
+0

yep. это работает. спасибо .. – pnsrinivasreddy

+0

, но одна вещь, которая делает этот метод instace(), имеет какие-либо проблемы с глобальным scope.the компонент, который отображается, имеет localStorage. при тестировании консоли он бросает ReferenceError: localStorage не определен. – pnsrinivasreddy

+1

Не знаете, почему это не помечено как ответ. –

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