测试反应组件(context.router - undefined)

时间:2017-04-01 15:08:01

标签: javascript reactjs jasmine react-router karma-runner

我正在用chai + karma +酶测试反应成分。

mount(
<Provider store={configureStore(mockContext, null)}>
  <Component {...props} />
</Provider>
)

我在这个组件context.router.location中使用。我得到的错误是这个未定义的。我尝试使用mount的第二个参数传递上下文,如下所示:

mount(
<Provider store={configureStore(mockContext, null)}>
  <Component {...props} />
</Provider>,    
    { 
      context: {
        router: {
          location: { pathname: '' }
        }
      },
      childContextTypes: {
        router: React.PropTypes.object
      }
    })

如何在我的组件中传递上下文?

"react-router": "^3.0.2",
"enzyme": "^2.3.0",

P.S。打字稿:)

1 个答案:

答案 0 :(得分:0)

您需要将childContextTypes作为单独的对象传递,而不是作为

的上下文子句传递
mount(
    <Provider store={configureStore(mockContext, null)}>
       <Component {...props} />
    </Provider>,    
    { 
      context: {
        router: {
          location: { pathname: '' }
        }
      },
      childContextTypes: {
          router: React.PropTypes.object
      }

    })