2016-11-16 2 views
1

Я использую Behat с Zombie.js для сквозных тестов, используя рамки materializecss. Я тестирую случай, когда действие create выходит из строя, и контроллер перенаправляет обратно на страницу формы.Материализация: невозможно прочитать свойство «badInput» неопределенного

я получаю следующее исключение:

And I press "Crear"  # WebContext::pressButton() 
    Error while processing event 'click': "TypeError: Cannot read property 'badInput' of undefined 
    at .<anonymous> (https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.4/js/materialize.min.js:8:22076) 
    at Function.each (https://code.jquery.com/jquery-2.1.1.min.js:2:2880) 
    at n.each (https://code.jquery.com/jquery-2.1.1.min.js:2:847) 
    at Object.Materialize.updateTextFields (https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.4/js/materialize.min.js:8:21969) 
    at HTMLDocument.<anonymous> (https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.4/js/materialize.min.js:8:22558) 
    at j (https://code.jquery.com/jquery-2.1.1.min.js:2:26860) 
    at Object.fireWith [as resolveWith] (https://code.jquery.com/jquery-2.1.1.min.js:2:27673) 
    at Function.ready (https://code.jquery.com/jquery-2.1.1.min.js:2:29467) 
    at HTMLDocument.I (https://code.jquery.com/jquery-2.1.1.min.js:2:29658) 
    at callListeners (/usr/lib/node_modules/zombie/node_modules/jsdom/lib/jsdom/events/EventTarget.js:170:34) 
     in http://localhost/myresource/create" (Behat\Mink\Exception\DriverException) 

Хуже всего то, что это не происходит от фактического браузера (может быть, это причина перенаправления?), Так что я понятия не имею, как воспроизвести его.

Любые идеи?

ответ

1

Я столкнулся с той же проблемой с Zombie.js тестирования

describe('User visits test page', function() { 
    const browser = new Browser(); 
    it('should open page ', function(done) { 
    browser.visit('/test', function() { 
    done(); 
    }); 
    }) 
}); 

простой HTML-страницы с одним входом:

<html> 
    <head> 
    <title>Test</title> 
    <link rel="stylesheet" href="/vendor/materialize/css/materialize.min.css" /> 
    <script type="text/javascript" src="/vendor/jquery.min.js"></script> 
    <script type="text/javascript" src="/vendor/materialize/js/materialize.js"></script> 
    </head> 
    <body> 
    <label for="email">Email</label> 
    <input id="email" name="email" type="email" /> 
    </body> 
</html> 

input.validity не определено в этом случае. Основная причина для меня не ясна. Но этого можно избежать с materialize.js изменения

$(input_selector).each(function(index, element) { 
    if ($(element).val().length > 0 
    || element.autofocus 
    ||$(this).attr('placeholder') !== undefined 
    || $(element)[0].validity.badInput === true) { 
     $(this).siblings('label').addClass('active'); 
    } 
    else { 
     $(this).siblings('label').removeClass('active'); 
    } 
    }); 

в

if ($(element).val().length > 0 
    || element.autofocus 
    || $(this).attr('placeholder') !== undefined) { 
     $(this).siblings('label').addClass('active'); 
    } else if ($(element)[0].validity) { 
     if ($(element)[0].validity.badInput === true) { 
     $(this).siblings('label').addClass('active'); 
     } 
     else { 
     $(this).siblings('label').removeClass('active'); 
     } 
    } 
    else { 
     $(this).siblings('label').removeClass('active'); 
    } 

Я создал запрос тянуть материализовать. Вот a link.

+0

Если возможно, сделайте запрос на растяжение «0.97.1», поскольку они ввели нарушение, измененное на следующем, без обновления основной версии (они, по-видимому, не следуют семантическому управлению версиями) –

+0

Он сливается с v '0.98 .0' –

Смежные вопросы