Jasmine to platforma programistyczna oparta na zachowaniu (BDD) do testowania kodu JavaScript. Jasmine nie ma żadnych zewnętrznych zależności i nie wymaga DOM.
Zawsze używałem Jasmine do moich testów jednostkowych, ale ostatnio zacząłem używać Stambułu do generowania raportów pokrycia kodu. Chodzi mi o to, że rozumiem sedno tego, co próbują mi powiedzieć, ale tak naprawdę nie wiem, co reprezentuje każdy z tych wartości procentowych (Stmts, Branches, Funcs, Lines). Jak dotąd Googling nie mogłem …
Mam dyrektywę AngularJS, która ma templateUrlzdefiniowany plik . Próbuję przetestować to z Jasmine. Moja Jasmine JavaScript wygląda jak poniżej, na zalecenie to : describe('module: my.module', function () { beforeEach(module('my.module')); describe('my-directive directive', function () { var scope, $compile; beforeEach(inject(function (_$rootScope_, _$compile_, $injector) { scope = _$rootScope_; $compile = _$compile_; $httpBackend = …
Jasmine spyOndobrze jest zmieniać zachowanie metody, ale czy istnieje sposób na zmianę właściwości value (zamiast metody) obiektu? kod mógłby wyglądać jak poniżej: spyOn(myObj, 'valueA').andReturn(1); expect(myObj.valueA).toBe(1);
Próbuję użyć Jasmine do napisania niektórych specyfikacji BDD dla podstawowych żądań jQuery AJAX. Obecnie używam Jasmine w trybie samodzielnym (tj. Do końca SpecRunner.html). Skonfigurowałem SpecRunner do ładowania jquery i innych plików .js. Jakieś pomysły, dlaczego poniższe nie działają? has_returned nie staje się prawdą, nawet pomyślał, że "yuppi!" alert pojawia się …
Mam napisaną usługę AngularJS i chciałbym ją przetestować. angular.module('myServiceProvider', ['fooServiceProvider', 'barServiceProvider']). factory('myService', function ($http, fooService, barService) { this.something = function() { // Do something with the injected services }; return this; }); Mój plik app.js zawiera te zarejestrowane: angular .module('myApp', ['fooServiceProvider','barServiceProvider','myServiceProvider'] ) Mogę sprawdzić, czy DI działa jako takie: describe("Using …
Zamknięte . To pytanie jest oparte na opinii . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby można było na nie odpowiedzieć, podając fakty i cytaty, edytując ten post . Zamknięte 7 lat temu . Popraw to pytanie Jakie są główne różnice między tymi dwoma frameworkami testowymi? …
(Jest tu powiązane pytanie: test Jasmine nie widzi modułu AngularJS ) Chcę tylko przetestować usługę bez uruchamiania Angulara. Spojrzałem na kilka przykładów i tutorial, ale nigdzie się nie wybieram. Mam tylko trzy pliki: myService.js: gdzie definiuję usługę AngularJS test_myService.js: gdzie definiuję test Jasmine dla usługi. specRunner.html: plik HTML z normalną …
Powiedzmy, że szpieguję taką metodę: spyOn(util, "foo").andReturn(true); Testowana funkcja wywołuje util.foowiele razy. Czy jest możliwe, aby szpieg wrócił truepo pierwszym wywołaniu, ale wrócił falsepo raz drugi? A może można to zrobić w inny sposób?
Chcę potwierdzić, że wartość jest ułamkiem dziesiętnym (lub 0), więc liczba powinna być większa lub równa zero i mniejsza niż 1. describe('percent',function(){ it('should be a decimal', function() { var percent = insights.percent; expect(percent).toBeGreaterThan(0); expect(percent).toBeLessThan(1); }); }); Jak naśladować „> = 0”?
Jak mogę sprawić, aby ten test zakończył się pomyślnie bez uciekania się do uruchomień / oczekujących bloków? it("cannot change timeout", function(done) { request("http://localhost:3000/hello", function(error, response, body){ expect(body).toEqual("hello world"); done(); }); });
Testuję router i mam dwie funkcje i muszę sprawdzić, czy pierwsza funkcja została wywołana, a druga nie. Istnieje metoda, toHaveBeenCalledale nie ma metody do sprawdzenia, czy funkcja nie została wywołana. Jak mogę to sprawdzić? Mam taki kod: var args, controller, router; beforeEach(function() { controller = { foo: function(name, id) { …
Czy z Jasmine można sprawdzić, czy dwie tablice zawierają te same elementy, ale niekoniecznie są w tej samej kolejności? to znaczy array1 = [1,2,3]; array2 = [3,2,1]; expect(array1).toEqualIgnoreOrder(array2);//should be true
Jasmine ma wbudowane dopasowujące toBei toEqual. Jeśli mam taki obiekt: function Money(amount, currency){ this.amount = amount; this.currency = currency; this.sum = function (money){ return new Money(200, "USD"); } } i spróbuj porównać, new Money(200, "USD")a wynik sumy, te wbudowane dopasowania nie będą działać zgodnie z oczekiwaniami. Udało mi się zaimplementować …
Mam obiekt, który można rozszerzyć wzdłuż testowanego zachowania, ale chcę się upewnić, że oryginalne właściwości nadal istnieją. var example = {'foo':'bar', 'bar':'baz'} var result = extendingPipeline(example) // {'foo':'bar', 'bar':'baz', 'extension': Function} expect(result).toEqual(example) //fails miserably Chciałbym mieć dopasowanie, które przejdzie w tym przypadku w następujący sposób: expect(result).toInclude(example) Wiem, że mogę napisać …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.