2015-12-09 6 views
1

Мы использовали реакцию примерно на один год с неизменными данными, очень впечатляющими. Теперь мы хотим перейти на Clojurescript/Reagent, но нам нужен очень хороший способ проверить наш код. Для компонентов это то, что мы сделали:Выход и поведение компонента тестирования модуля Clojurescript/Reagent

  1. Проверьте выход компонента, в зависимости от реквизита мы послали:
  2. испытаний, что компонент вызывает правильные функции и с правильными параметрами, когда происходит событие, как мыши

Для 1 это было бы как:

function renderFFC(filters, search_criterias) 
{ 
    return TestUtils.renderIntoDocument(React.createElement(FilterIntervalNumberComponent,{filter:filters, search_criteria:search_criterias})); 
} 

describe("IN", function(){ 
    it("should render search criteria - interval", function() { 
     var criterias = {}; 
     var ffc = renderFFC(filter, criterias); 
     expect(ffc.refs[0].getDOMNode().value).toBeNull(); 
     expect(ffc.refs[1].getDOMNode().value).toBeNull(); 
    }); 

Для 2 это было бы что-то вроде:

describe("OUT", function(){ 
    it("should change the values, then click - boolean ", function() { 
     //mock function 
     set_criteria_and_search = jest.genMockFunction(); 

     var fbc = renderFBC(filter, {}); 

     React.addons.TestUtils.Simulate.change(fbc.refs.yes.getDOMNode(),{nativeEvent: {target: {value: true}}}); 

     expect(controller.set_criteria_and_search.mock.calls) 
      .toEqual(
        [['taxes_applied',{'taxes_applied':[{value:"1"}]}]] 
       ); 
    }); 

Мы использовали facebook Jest для испытаний.

Как сделать то же самое в Clojurescript с реагентом, желательно, чтобы тесты автоматически запускались?

+0

С нетерпением жду ответа. Попробуйте использовать шаблон ** lein template ** и посмотрите, что они настроили. Не забудьте опцию '+ test' https://github.com/reagent-project/reagent-template/blob/master/README.md#options – Joaquin

+0

По какой-то причине я не могу получить + тест для работы , lein new figwheel name - --reagent + test ?? –

+1

Это шаблон шаблона, который вы используете. Вместо этого используйте шаблон для реагентов: 'lein new reagent + test' – Joaquin

ответ

1

компоненты реактива:

испытаний компонент выходного сигнала. Для компонента:

(defn weather-component [city temp country] 
    [:div#weather 
    [:h2#city {:on-click #(do-something 101)} city ] 
    [:h3#temp temp] 
    [:h3#contry country]]) 

Тест:

(deftest weather-component-test-in 
    ;;WHEN render component in test 
    (let [comp (r/render-component [w/weather-component "Paris" 12] 
          (. js/document (getElementById "test")))] 
    ;;ASSERT 
    (is (= (d/html (sel1 :#city)) "Paris")) 
    (is (= (d/html (sel1 :#temp)) "12")))) 

Проверьте, что компонент вызывает правильные функции и с правильными параметрами, когда событие, как мыши происходит

(deftest weather-component-test-out 
(let [comp (r/render-component [w/weather-component "London" 0] 
          (. js/document (getElementById "test"))) 
    expected-invocations (atom [])] 
    (with-redefs [weather-app.core/do-something #(swap! expected-invocations conj %)] 
     (sim/click (sel1 :#city) {}) 
     (is (=[101] @expected-invocations))))) 

Чтобы манипулировать dom и имитировать события:

[cljs-react-test "0.1.3-SNAPSHOT"] и dommy (d/...)

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

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