2015-07-14 11 views
2

У меня есть очень простой компонент, который использует библиотеку момента React:Jest не загружается моменту

import React from 'react'; 
import moment from 'moment'; 

let { Component } = React; 

export class SimpleApp extends Component { 
    constructor (props) { 
     super(props); 
     var currentDate = this.props.data[this.props.current].date; 

     this.state = { 
      currentDate: currentDate, 
      currentFromatted: moment(currentDate).format('dddd, MMMM Do YYYY') 
     }; 
    } 

    render() { 
     return (
      <div className="simple">{this.state.currentDate}</div> 
     ); 
    } 
} 

module.exports = SimpleApp; 

И я этот тест, чтобы проверить этот компонент:

import React from 'react/addons'; 
import SimpleApp from '../js/components/pages/Simple.react'; 

var TestUtils = React.addons.TestUtils; 


jest.dontMock('../js/components/pages/Simple.react'); 
jest.dontMock('moment'); 

describe('SimpleApp',() => { 
    it('should not do anything',() => { 
     var data = { 
      "date": "2015-07-01", 
      "total": 2, 
      "results":[ 
       { 
        "startTime": "2015-07-01T00:00:00.000", 
        "endTime": "2015-07-01T00:59:59.999", 
        "total": 2, 
        "results":[ 
         { 
          "type":"motion", 
          "count":2 
         }, 
         { 
          "type":"transaction", 
          "count":0 
         } 
        ] 
       } 
      ] 
     }; 

     var simple = TestUtils.renderIntoDocument(
      <SimpleApp data={[data]} current="0" /> 
     ); 

     var div = TestUtils.findRenderedDOMComponentWithTag(simple, 'div'); 
     expect(div.getDOMNode().textContent).toEqual('2015-07-01'); 
    }) 
}) 

при запуске npm test я получаю ошибка говорит, что не может вызывать метод «формат» неопределенного:

● SimpleApp › it should not do anything 
    - TypeError: Cannot call method 'format' of undefined 
     at new SimpleApp (/Users/xiaofanyang/workspace/solink/histogram/flux2/js/components/pages/Simple.react.js:13:69) 

кажется, что в тот момент, когда библиотека была насмехались, однако, я уточнить не издеваться ... но не очевидно, не поможет ...

ответ

0

Способ, которым мне удалось обойти эту проблему, делая

jest.autoMockOff(); 

, а затем вручную издевается что-нибудь еще что мне нужно в проекте.

0

Для меня это сработало:

jest.dontMock «WebPack/Buildin/модуль» и я должен был поставить момент в unmockedModulePathPatterns в моем package.json - это было не достаточно, чтобы просто размоделировать его в тесте ,

Похоже, что webpack/buildin/module - это загрузчик веб-пакетов, который включен, так что момент может загружать другой модуль. Так что это зависимость момента, и ее нужно специально не издеваться. Однако; - Я не совсем понимаю, что он делает. (Хотя это, кажется, является частью ответа: https://github.com/webpack/webpack/issues/333)

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