2016-11-16 110 views
1

我使用BehatZombie.js進行端到端測試,使用materializecss框架。我正在測試create操作失敗並且控制器重定向回表單頁面的情況。Materialise:無法讀取屬性'badInput'的undefined

我得到以下異常:

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

我面臨着同樣的問題用簡單的HTML頁面的Zombie.js測試

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

一個輸入:

<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'); 
    } 

我創建pull請求兌現避免。這裏是a link

+0

如果可能的話,當pull請求爲'0.97.1'時,他們在下一個更新主要版本時引入了中斷更改(顯然,它們並沒有遵循語義版本化) –

+0

它合併到v'0.98 .0' –