2016-04-27 10 views
0

Ich bin ein wenig neu zu testen Javascript und ich fragte mich, was ist der beste Weg, etwas zu testen, wo eine eindeutige ID generiert wird.Javascript Tests mit eindeutigen IDs

EDIT:

Ich will nicht wirklich die ID ich sicherstellen möchten, testen, ob die Aktion die richtigen Ergebnisse zurückgibt, wenn die createQuestion Funktion aufgerufen wird. Der Test wird jedoch fehlschlagen, da die ID niemals übereinstimmt, da sie in der Funktion generiert wird.

Mein aktueller Code sieht so aus.

//------- 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(); 
 
    });

Da die eindeutige ID im Aktions Creator erzeugt wird, ist es unmöglich, spotten, wenn ich nicht die ID, nachdem die Funktion zurückkehrt mit der Aktion ändern.

Mit so etwas wie dieses

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

Was ist mit der ID möchten Sie testen? – Hamms

+0

Ich möchte nicht wirklich die ID testen Ich möchte sicherstellen, dass die Aktion die richtigen Ergebnisse zurückgibt, wenn die createQuestion -Funktion aufgerufen wird. Der Test wird jedoch fehlschlagen, da die ID niemals übereinstimmt, da sie in der Funktion generiert wird. – Enjayy

Antwort

1

Es sei denn, Sie in id interessiert sind einen bestimmten Wert zu haben, ist es völlig in Ordnung aus expectedAction auszuschließen.

assert.ok(actualAction.question.id); 

delete actualAction.question.id; 

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

Ich glaube, es wäre 'actualAction.question.id' – Hamms

+0

Ja, meine Schuld. Vielen Dank! –

+0

Ehrfürchtig, das funktioniert und ist ein wenig schlauer als die Art, wie ich darüber nachdachte. Die IDs sind nicht wirklich wichtig für den Rest des Inhalts. Ich wollte nur sicherstellen, dass ich die zurückgegebenen Daten nicht unnötig manipuliere. – Enjayy

Verwandte Themen