2017-05-16 1 views
-1

Ich habe eine Hausaufgabe, die Aufgaben zu beginnen, einfache Tests zu schreiben.Nicht sicher, ob dies eine korrekte Implementierung eines Tests in JavaScript ist

Sie verwenden dies als ein Beispiel.

Schreiben Sie eine assertEqual-Funktion von Grund auf.

Es sollte tatsächliche und erwartete Werte mit strenger Gleichheit (nicht Typcasting) vergleichen.

ERFOLG CASE

function multiplyByTwo(n) { 
    return n * 2; 
} 
var output = multiplyByTwo(2); 
// returns 4 assertEqual(output, 4, 'it doubles 2 to 4'); 
// console output: // passed 

Fehlerfall

function multiplyByTwo(n) { 
    return (n * 2) + 1; // an incorrect implementation 
} 
var output = multiplyByTwo(2); // returns 5 
assertEqual(output, 4, 'it doubles 2 to 4'); 
// console output: 
// FAILED [it doubles 2 to 4] Expected "4", but got "5" 

Das ist, was ich bisher haben ...

function compareWithStrictEquality(val1, val2) { 
    return val1 === val2; 
} 

function assertEqual(actual, expected, testName) { 
    testName = assertEqual.name + ' : should compare actual and expected values with strict equality (not typecasting).'; 
    console.log(testName); 

return (actual()) === typeof 'boolean'; 

} 

I didn geh nicht zu weit, denn ich weiß nicht, wo ich anfangen soll! Außerdem habe ich in der Vergangenheit mit einigem JavaScript assesments gearbeitet. Wenn ich mir das Beispiel anschaue, denke ich, dass ich eine Art von komplexer Logik schreiben muss, analog zu der Testsuite, mit der ich verbunden bin ... Wie sonst würde es herausfinden, ob Ihre Funktion funktioniert?

Irgendwie glaube ich, dass es viel einfacher ist und ich überlege es!

Vielen Dank im Voraus!

Antwort

1

Vorausgesetzt, Sie müssen keine tiefe Objektinspektion durchführen (mehr dazu später), sieht es so aus, als ob Sie auf dem richtigen Weg sind und fast fertig sind. In Ihrem assertEqual müssen Sie den Vergleich durchführen und die Nachricht zurückgeben. Ein einfacher Weg dies zu tun:

var passed = compareWithStrictEquality(actual, expected) 
if (passed) console.log('passed') 
else console.log('FAILED ' + testName + ' Expected ' + expected + ', but got ' + actual) 

Beachten Sie, dass dies nicht funktioniert, wenn Sie Objekte vergleichen müssen. Zum Beispiel:

{} === {} 
// output: false 

Wenn Sie object Vergleich zu tun, benötigen Sie irgendeine Form von tiefem Vergleich benötigen: Object comparison in JavaScript

Verwandte Themen