2016-10-18 21 views
-1

私は 'counter'のために 'test'関数を書いていますが、動作しません!私が間違っているところを理解するのを助けることができますか?JavaScript:テスト機能

'test'には 'toEqual'というメソッドが必要です。

PS: 'カウンター' は良いです

function test(data) { 
 
\t toEqual: function(e) { 
 
    \t  return (
 
    \t   this.data.bind(this) == e ? console.log('good'):console.log('sucks!') 
 
    \t ); 
 
\t } 
 
} 
 

 
const counter = (state = 0, action) => { 
 
    switch (action.type) { 
 
     case 'INCREMENT': 
 
      return state + 1; 
 
     case 'DECREMENT': 
 
      return state - 1; 
 
     default: 
 
      return state; 
 
    } 
 
} 
 

 
test(
 
    counter(0, { type: 'INCREMENT' }) 
 
).toEqual(1); 
 

 
test(
 
    counter(1, { type: 'INCREMENT' }) 
 
).toEqual(2); 
 

 
test(
 
    counter(2, { type: 'DECREMENT' }) 
 
).toEqual(1); 
 

 
test(
 
    counter(2, { type: 'DECREMENT' }) 
 
).toEqual(0); 
 

 
test(
 
    counter(1, { type: 'SOMETHING_ELSE' }) 
 
).toEqual(1); 
 

 
test(
 
    counter(undefined, {}) 
 
).toEqual(0);

+0

あなたのコードでは、構文エラーを与える:

const counter = function(state, action) { switch (action.type) { case 'INCREMENT': return state + 1; case 'DECREMENT': return state - 1; default: return state; } } 

を次に、あなたは、単にこのように、二つの引数を使用してtoEqual関数を呼び出すことができます! – gurvinder372

+4

関数とオブジェクトリテラルが混乱しています。関数にはメソッドがありません。 – Bergi

+0

@Bergi - おそらく私はあなたのコメントを誤解しているかもしれませんが、JavaScriptの "オブジェクト"がもっとも確かにメンバーとしての機能を持つことができることに注意してください。 –

答えて

0

あなたのコードの簡素化は、いくつかの混乱を解明し、あなたがに実行されている構文の問題を解決するのに役立ちます...

あなたの現在のtest関数は、関数であることの試みとオブジェクトの両方として誤って記述されています。ただ、testは、オブジェクト(テストライブラリの可能性の始まり)であるとすると、toEqualはそうのような二つの引数を受け取る関数(テストライブラリ内の最初の関数)、もしてみましょう:あなたが持っているまで

const test = { 
     toEqual: function(counterInstance, expected) { 
     return counterInstance === expected ? console.log('they are equal') : console.log('they are not equal'); 
     } 
    } 

構文の理解を深めるために、私はES6 arrow function =>構文を延期することをお勧めします。ただ、単純な関数の構文とcounterを書く:

test.toEqual(counter(0, { type: 'INCREMENT' }), 1); 
+1

私は同じ答えをしてからこれを見ました** 'テスト'には 'toEqual'というメソッドが必要です!** – Craicerjack

+0

@Craicerjack - 私の監視をキャッチしてくれてありがとう - 答えが更新されました – jacefarm