2017-03-23 6 views
1

反応コンポーネントの単体テストを作成しようとしています。ここに私のコンポーネントは次のとおりです。組み込み関数を認識できないため、反応コンポーネントの結合テストが失敗する

上記のコードremoveAllSpaceで
import React from "react"; 

require("../../../../css/ads/ads.css"); 
export class Ads extends React.Component { 


render() { 
    return (
     <div className="ads-container txt-flex-alignment"> 
      <a id={"dummyAdsLink" + this.props.channel.removeAllSpaces().toLowerCase() + this.props.adsId} 
       href="#" 
       target="_top"><img 
       id={"dummyAdsImg" + this.props.channel.removeAllSpaces().toLowerCase() + this.props.adsId} 
       className="img-responsive" src={this.url} 
      /></a> 


     </div> 


    ); 
} 

}

次のように私はjavascriptのプロトタイプの拡張によって作成された関数である:

String.prototype.removeAllSpaces = function() { 
return this.replace(/\s+/g, ''); 
} 

そしてここでは、私のテストです:

import React from 'react'; 
import expect from 'expect.js'; 
import {shallow} from 'enzyme'; 
import {Ads} from "../../src/app/components/story/ads/Ads"; 
import renderer from 'react-test-renderer'; 

describe('<Ads />',() => { 

    it('should render 1 <a /> components',() => { 
    const wrapper = shallow(<Ads channel="whatevername"/>); 
    expect(wrapper.find('a')).to.have.length(1); 
}); 
}); 

私がテストを実行すると、次のエラーが表示されます。

TypeError: this.props.channel.removeAllSpaces is not a function 

どうやら、私のremoveAllSpaces関数は好きではありません。

アップデート:私は削除したときにremoveAllSpacesは、すべてがうまく

答えて

2

を作品に機能あなたの中に文字列のプロトタイプにremoveAllSpacesメソッドを追加しようとファイルをテスト、私はそれが動作するはずだと思います。

関連する問題