Wie unit-Tests, javascript-Funktion, die einen parameter mit jasmine oder mocha
Ich habe eine einfache Frage. Wie kann ich die unit-test-eine Funktion, die abhängig von einem parameter? Wie sagen Sie zum Beispiel:
Code:
function a(param) {
if(param > 0)
return param+value;
else
return param;
}
Wie kann ich die unit-test-Funktion ein, ohne param? Ich höre diese verwende ich verspottet oder Spione in Jasmin. Kann mir jemand zeigen, ein Beispiel, ich bin wirklich verwirrt. Ich danke Ihnen allen im Voraus.
Edit:
Danke für so eine conprehensive Antwort David. Ich wirklich zu schätzen. Hier finden Sie weitere Informationen über meine Frage.
Dies ist in der Tat meine wahre Frage, ich habe eine Datei
snap-fed.js :
//Code here...
Ich würde gern unit-Tests umfassend als Sie mir das zeigte. Aber ich bin mir nicht sicher, wie dies zu tun mit jasmine oder mocha.
Mag, wie könnte ich das testen von Methoden der snap-Objekt? Wie konnte ich das unit-test-snap.die Wählbarkeit oder snap.isSnapResourceEligibile? Habe ich fest auf dieses Problem für etwa 2 Tage, die ich wirklich nicht verstehen.
Alle in einer parameter-info bietet Informationen über das Objekt, an dem gearbeitet wird mit Methoden.
War dies meine wahre Frage aber ich wusste nicht, wie Sie Fragen.
Edit 2:
Basierend auf David ' s Vorlage habe ich dieses, aber es gar nicht laufen...
snap-fed.spec.js :
describe("snap-fed", function() {
describe("Properties", function() {
it("should exist", function() {
expect(Allowance).not.toBeUndefined();
expect(AllowanceAdditional).not.toBeUndefined();
expect(MaxAllowanceHouseholdSize).not.toBeUndefined();
});
it("should contain correct values", function() {
expect(Allowance).toEqual([189, 347, 497, 632, 750, 900, 995, 1137]);
expect(AllowanceAdditional).toBe(142);
expect(MaxAllowanceHouseholdSize).toBe(Allowance.length);
});
});
describe("Functions", functions(){
it("should return the expected result", function() {
expect(snap.isSnapResourceEligible(info)).toBeTruthy();
});
//Put more test cases for the various methods of snap
});
});
Können Sie bitte geben Sie mir ein Beispiel? Was du sagst macht Sinn, aber ich denke, wenn ich sah, ein Beispiel, ich möchte verstehen, viel besser
InformationsquelleAutor mosawi | 2014-09-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Konnte der test so Aussehen wie Jasmin:
Diesem Szenario erwartet, dass die variable
value
innerhalb der Funktiona
konstant gleich 5 ist. Das Szenario kann aber auch komplexer sein und die tests würden anders Aussehen. Wenn es irgendeine Logik über dievalue
variable, bitte zeigen Sie es in Ihrer Frage, ich werde Sie dann Bearbeiten meine Antwort.EDIT: Probe für den zweiten Teil Ihrer Frage
Also, wenn die Förderfähigkeit Funktion sah so aus nach dem entfernen der
Q.fcall
:Dann könnte man testen Sie das snap-Objekt wie in diesem Beispiel:
Ich nicht abdecken der ganze snap-Objekt mit tests. Aber weitere test werden ähnlich sein, mein code sollte ein Beispiel sein und mehr tests gebaut, in einer ähnlichen Weise.
Ich fügte hinzu, die zusätzlichen Informationen, die Sie angefordert
Danke, dass du die Erweiterung deiner Frage, das macht es viel komplizierter 🙂 ich werde glücklich sein zu helfen. Aber bitte erklären Sie mir, was ist der Punkt, der
Q.fcall(function () {...}
. Ich bin nicht sehr vertraut mit Q aber dieser Aufruf gibt ein Versprechen, richtig? Ich scheint mir, wie es absolut nicht nötig. Ich Frage, weil es ist etwas komplexer zu testen asynchronen Codes, also weglassen unnötiger verspricht es einfacher machen würde. Danke!Du hast Recht, das ist ein Versprechen. Die Versprechungen werden nicht dem Projekt, so ignorieren Sie bitte diesen Teil. Und ich danke Ihnen für Ihre Bereitschaft zu helfen
OK! Aktualisiert meine Antwort. Wenn Sie irgendwelche Fragen haben, lassen Sie mich bitte wissen.
InformationsquelleAutor David Bohunek