Ich habe folgenden Code in meinem JavaScript-Code.
%Vor%Ich schreibe Test für dieses Stück Code. Wie stelle ich die Methode window.confirm vor? Ich habe versucht, folgenden Code, aber es hat nicht funktioniert.
%Vor%Ich kann die window.confirm-Methode auf eine andere Funktion verschieben und dann kann ich diese Methode vortäuschen. Ich habe mich jedoch gefragt, ob es eine bessere Lösung gibt.
Ich benutze Jasmine für Unit-Tests und habe die Warnung verspottet und bestätige mit dem folgenden
%Vor%Dann kann ich sagen:
%Vor%Es ist nicht perfekt, und wenn Sie mehrere Bestätigungen haben, die zwischen der Einstellung von confirmValue liegen könnten, könnten Sie in Schwierigkeiten geraten. Vielleicht wäre es dann gut, einen Hinweis auf erwartete Rückgabewerte zu setzen ... knifflig ...
Ich würde darüber nachdenken, einen Wrapper um statische Methoden auf dem Fensterobjekt (oder einem anderen Objekt) zu implementieren. Stellen Sie dann Ihren Wrapper zu der statischen Methode bereit. Offensichtlich ist dies einfacher, wenn Sie eine "Klassen" -basierte Implementierung verwenden. Um die Methode zu überspielen, stellen Sie einfach einen anderen Wrapper bereit, der den gewünschten Wert zurückgibt.
%Vor%...
%Vor%Dein eigener Code funktioniert für mich im IE. Nur das folgende im globalen Bereich sollte es überschreiben:
%Vor% BEARBEITEN
Ich habe in der Vergangenheit ein paar Fragen zu SO gesehen, in denen versucht wurde, confirm
zu überschreiben, hauptsächlich weil sie es nicht mögen (und wer würde das?). Wenn Sie versuchen, es aus diesem Grund zu umgehen, sollten Sie Ihren Code ändern, um einen Callback-basierten Ersatz zur Bestätigung zu implementieren. Sehen Sie sich die modale Bestätigung von jQuery UI für ein gutes Beispiel hierfür an.
Tags und Links javascript