Как это проверить этот Javascript с жасмином - PullRequest
0 голосов
/ 07 мая 2018

У меня проблема, я хочу проверить этот javascript

$("#ShootBtn").on('click', () => foo.testFunc());

var foo = {
    testFunc: function() {
        hub.server.shoot(true, username, gameCode);
   }
}

Я использую Jasmine в качестве моей тестовой среды, и я попробовал Karma и Chutzpah в качестве моего тестового бегуна.

В моем тестовом проекте, где я пытаюсь сослаться на файл выше, я пробовал много разных вещей, но, похоже, я не могу понять это. Тест выглядит так: атм.

/// <reference path="../../TankWebApplication/Scripts/jquery-3.3.1.js"/>
/// <reference path="../../TankWebApplication/Scripts/virtualjoystick.js"/>
/// <reference path="../../TankWebApplication/Scripts/gameController.js"/>


describe("DefaultTest",
function () {

    beforeEach(function() {

    })

    it("Test",
        function() {
            spyOn(foo, 'testFunc');
            document.getElementById('ShootBtn').click();
            expect(foo.testFunc).toHaveBeenCalled();

        });


});

TestFunc не был вызван говорит:

TypeError: Cannot read property 'click' of null

Что, я думаю, означает, что он не может нажать на мою стрелку

Нельзя ли это проверить или что я делаю не так?

1 Ответ

0 голосов
/ 07 мая 2018

Что вы можете сделать, это шпионить за document.getElementById и заставить его вернуть объект, который имеет click функцию:

   spyOn(document, "getElementById").andCallFake(() => ({
       click: () => foo.testFunc()
   })); 

jsFiddle

В противном случае создайте элемент с id = ShootBtn, присоедините к нему обработчик щелчка и добавьте его в тело (все это должно быть сделано внутри теста)

jsFiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...