2016-04-27 18 views
0

私は、javascriptをテストするのにちょっと新しく、ユニークなIDが生成された場所をテストする最善の方法は何か不思議でした。ユニークIDを使用したJavascriptテスト

EDIT:

私は本当に私はcreateQuestion関数が呼び出されたときにアクションが右の結果を返すことを確認するにはIDをテストする必要はありません。しかし、IDは関数内で生成されているので決して一致しないため、テストは失敗します。

私の現在のコードは次のようになります。

//------- Action Creator --------// 
 

 
export const createQuestion = function (inputType) { 
 
    const hasOptions = /radio/g.test(inputType); 
 
    return { 
 
    type: types.CREATE_QUESTION, 
 
    question: { 
 
     id: uuid.v1(), 
 
     priority: null, 
 
     title: null, 
 
     tip: null, 
 
     required: false, 
 
     isSaved: false, 
 
     hasOptions: hasOptions, 
 
     input: { 
 
     type: inputType, 
 
     options: [] 
 
     } 
 
    } 
 
    }; 
 
}; 
 

 

 
//------- TESTS --------// 
 
test('Question Actions', nest => { 
 

 
    nest.test('Create Question', function (assert) { 
 
    const msg = 'Questions was Created'; 
 

 
    const question = { 
 
     id: 1, 
 
     priority: null, 
 
     title: null, 
 
     tip: null, 
 
     required: false, 
 
     isSaved: false, 
 
     hasOptions: false, 
 
     input: { 
 
     type: 'text', 
 
     options: [] 
 
     } 
 
    }; 
 

 
    const expectedAction = { 
 
     type: types.CREATE_QUESTION, 
 
     question 
 
    }; 
 

 

 
    const actualAction = actions.createQuestion('text'); 
 
    assert.deepEqual(actualAction, expectedAction, msg); 
 
    assert.end(); 
 
    });

固有のIDは、私は関数がアクションを返した後、IDを変更しない限り模擬することは不可能であるアクションCreatorで生成されるため。この

const changeUUID = obj => { 
    const newobj = {...obj}; 
    newobj.question.id = 1; 
    return newobj; 
}; 
+0

あなたがテストしたいIDはどうですか? – Hamms

+0

IDを実際にテストする必要はありません。createQuestion関数が呼び出されたときにアクションが正しい結果を返すようにしたいと思います。しかし、IDは関数内で生成されているので決して一致しないため、テストは失敗します。 – Enjayy

答えて

1

ようなもので

あなたが特定の値を持っているIDに興味がある場合を除き、expectedActionからそれを除外するために、完全に罰金です。

assert.ok(actualAction.question.id); 

delete actualAction.question.id; 

assert.deepEqual(actualAction, expectedAction, msg); 
+0

私はそれが 'actualAction.question.id'と信じています – Hamms

+0

まあ、私のせいです。ありがとう! –

+0

私はそれについて考えていたよりも少しうまく動作します。 IDはコンテンツの残りの部分とはまったく関係ありません。私は、返されたデータに対して不必要な操作をしていないことを確認したかっただけです。 – Enjayy

関連する問題