Cordovaアプリケーションのジャスミンテストを実行するときに問題が発生しました。<head>
ロードするスクリプト(プラグイン、サービス、コントローラーなど)と最後に含まれるファイルを含むhtmlページ(Jasmine 2.4 SpecRunner.html)があります。<head>
テストファイルです。ボディにはdeviceready
イベントリスナーがいます。しかし、Androidエミュレーターに対してテストを実行すると、テストは常に前deviceready
に実行され、プラグインが表示されません(つまり、エラー「デバイスが定義されていません」)。
したがって、問題は、deviceready
イベントの直後にテストファイルの実行を遅らせる方法です。
私のSpecRunner.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<meta name="msapplication-tap-highlight" content="no" />
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
<title>SportsWellness</title>
<script src="scripts/winstore-jscompat.js"></script>
<link rel="shortcut icon" type="image/png" href="jasmine/lib/jasmine-2.4.1/jasmine_favicon.png">
<link rel="stylesheet" href="jasmine/lib/jasmine-2.4.1/jasmine.css">
<!-- Jasmine Modules -->
<script src="jasmine/lib/jasmine-2.4.1/jasmine.js"></script>
<script src="jasmine/lib/jasmine-2.4.1/jasmine-html.js"></script>
<script src="jasmine/lib/jasmine-2.4.1/boot.js"></script>
<!-- SportsWellness references -->
<link rel="stylesheet" href="css/app.css" />
<!-- AngularJS modules -->
<script src="libs/angular.min.js"></script>
<script src="libs/angular-resource.min.js"></script>
<script src="libs/angular-ui-router.js"></script>
<script src="libs/angular-touch.min.js"></script>
<script src="libs/angular-animate.min.js"></script>
<script src="libs/angular-mocks.js"></script>
<!-- Cordova reference, this is added to app when it's built. -->
<script src="cordova.js"></script>
<!-- Include Application scripts -->
<script type="text/javascript" src="js/app.js"></script>
<script type="text/javascript" src="js/router.js"></script>
<script type="text/javascript" src="js/platformOverrides.js"></script>
<!-- Include Controllers-->
<!-- Script tags -->
<!-- Include Services -->
<!-- Script tags -->
<!-- Include Directives -->
<!-- Script tags -->
<!-- Include Configuration Scripts -->
<!-- Script tags -->
<!-- Include specs to run -->
<script src="tests/ServicesTests/ReminderService.spec.js"></script>
</head>
<body>
<script type="application/javascript">
document.addEventListener('deviceready', function () {
navigator.splashscreen.hide();
}, false);
</body>
</html>
ソリューションは思ったほど美しくはありませんが、jasmine / boot.jsファイルを変更し、window.onload
関数を次のように置き換えましたdocument.addEventListener('deviceready', ...)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加