2017-02-20 10 views
0

私は1つの反応成分を持ち、その成分の中に1つの機能があります。そのための単体テストケースを作成したいと思います。以下は私のサンプルユニットテストケースです。関数名はgetNewGroupNameカルマとジャスミンを使用した反応系の成分の単位試験機能

describe("CreateGroupName component",() => { 

     it("Correct Copy name should be generated for first copy",() => { 
      component = ReactTestUtils.renderIntoDocument(< CreateGroupName reactor = { 
       reactor 
      } > < /CreateGroupName>); 

      expect(component.getNewGroupName("SampleGroupName")).tobe("SampleGroupName - Copy(1)") 
      }); 

     }); 

あるしかし、私はユニットテストケースを実行しているとき、私は、エラー

はTypeError下に取得しています:未定義のコンストラクタではありません(「e.getNewGroupName( 『SampleGroupNameを』)」を評価)

デバッガを使用してオブジェクトを調べた後、このオブジェクトの以下のプロパティしか見ることができません。

enter image description here

私はまた、酵素のライブラリを使用して、テストの上に書いてみました。しかし、どちらも結果に同じ目的を与えています。ここで

it("Correct Copy name should be generated for first copy",() => { 
      const wrapper = enzyme.mount(<CreateGroupName reactor={reactor}></CreateGroupName>); 
      const inst = wrapper.instance(); 
      expect(inst.getNewGroupName('SampleGroupName')).toBe("SampleGroupName - Copy(1)"); 
     }); 

は)

enter image description here

スタックトレースが

"TypeError: t.getNewGroupName is not a function 
    at Object.<anonymous> (http://localhost:9876/base/app/spec/webpack.loader.js:96:18873) 
    at attemptSync (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1886:24) 
    at QueueRunner.run (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1874:9) 
    at QueueRunner.execute (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1859:10) 
    at Spec.queueRunnerFactory (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:697:35) 
    at Spec.execute (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:359:10) 
    at Object.fn (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:2479:37) 
    at attemptAsync (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1916:24) 
    at QueueRunner.run (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1871:9) 
    at http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1898:16" 
+0

CreateGroupNameコンポーネントの外観は何ですか?これは通常、何かを適切に返さないときに発生します。 –

+0

'.tobe()'の代わりに '.toBe()'はどうでしょうか? –

+0

これを修正しましたが、まだ動作していません – Sachin

答えて

0

ReactTestUtils.renderIntoDocument(下記のようになり、私のコンポーネントであり、それはレンダリング後にコンポーネントの出力を表すDOMノードをレンダリング。 https://facebook.github.io/react/docs/test-utils.html#renderintodocument

これは、レンダリングされたDOMノードのメソッドではなく、Reactコンポーネントの関数であるgetNewGroupName()を呼び出そうとしているようです。

+0

コンポーネントの機能をテストする方法はありますか?それは不可能ですか? – Sachin

+0

ユニットテストのリアクションコンポーネントにJest(https://facebook.github.io/jest/)を見てください。 Enzyme(http://airbnb.io/enzyme/)もコンポーネントをレンダリングし、レンダリングされた結果に対してアサートするのに役立ちます。次に、renderedresult.instance()。yourfunction()を使用して、コンポーネントのメソッドを呼び出すことができます。こちらをご覧ください:https://github.com/airbnb/enzyme/issues/208 –

+0

ユニットテストケースの2番目のサンプルをチェックすると、同じことをやっていて失敗しています – Sachin

関連する問題