Asial Blog

Recruit! Asialで一緒に働きませんか?

タグ「JavaScript」の一覧

ElectronでOnsenUIを利用してみよう!

カテゴリ :
デザイン・UI
タグ :
JavaScript
onsenui
Electron
Hello Worldの表示
ElectronとOnsenUIを組み合わせてデスクトップアプリを作ってみます。

Babelを使って次期JavaScript、ES6を体験しよう

カテゴリ :
フロントエンド(HTML5)
タグ :
JavaScript
ES6
babel-site.png
ES6をいち早く体感できるBabelを試しました

Monacaサービス連携機能にAmazon Mobile Analyticsが追加されました

カテゴリ :
Monaca
タグ :
Monaca
aws
Amazon Mobile Analytics
JavaScript
アナリティクス
JSコード.png
Amazon Mobile AnalyticsをMonacaプロジェクトに組み込む方法をご紹介します。

Monaca IDEではTypeScriptが使えます

カテゴリ :
Monaca
タグ :
JavaScript
TypeScript
TypeScript変換エラー
Monaca IDEではTypeScript変換機能を備えています。今回はそのデモです。

MonacaアプリでFacebookログインを使ってみよう

カテゴリ :
Monaca
タグ :
JavaScript
Facebook
Facebookアプリ
Facebook認証を使ったMonacaアプリを作るデモです。

Monacaアプリでコピー&ペーストを実装するならクリップボードプラグイン!

カテゴリ :
Monaca
タグ :
Monaca
HTML5
JavaScript
プラグイン
icon
今回は、「VersoSolutions/CordovaClipboard」プラグインの使い方を紹介します。
このプランを利用することで、アプリ内でのテキストコピー&ペーストができます。

Monacaアプリでフラッシュライトを利用する方法

カテゴリ :
Monaca
タグ :
Monaca
JavaScript
HTML5
download_zip
今回は、「EddyVerbruggen/Flashlight-PhoneGap-Plugin」プラグインを利用して
フラッシュライトを操作するサンプルプロジェクトを作ります。

NVD3を使って、AngularJSで作ったハイブリッドアプリのグラフを統合しよう

カテゴリ :
フロントエンド(HTML5)
タグ :
JavaScript
HTML5
ハイブリッドアプリにグラフを表示する方法はいくつもあります。ハイブリッドアプリは基本的にHTML,Javascript,CSSで動くウェブアプリケーションなので、JavaScriptのグラフライブラリならなんでも使うことができますし、バックエンドでグラフを作成して静止画として表示することもできます。

この記事では、D3というデータビジュアリゼーションライブラリに基づき、再利用することのできるNVD3に注目します。それでは、このNVD3がJavaScriptのみでどうやってグラフを作成し、AngularJSのディレクティブにどのようにしてラッピングされているのかを見>ていきましょう。

LocalKitを使っているなら自動テストも簡単。JavaScriptテストフレームワークまとめ

カテゴリ :
Monaca
タグ :
JavaScript
テスト
Jasmine

LocalKitを使うメリットの一つにテストフレームワークが容易に使えるようになるという点が挙げられます。そこで今回は開発したJavaScriptコードでユニットテストを実現するためのフレームワークを紹介します。



Jasmine: Behavior-Driven JavaScript




Jasmine

Jasmine



JasmineはRSecに似た記述のテスト文法をもったテストフレームワークとなっています。例えば次のように記述します。



  1. describe("CallTracker", function() {
  2.   it("tracks that it was called when executed", function() {
  3.     var callTracker = new j$.CallTracker();
  4.  
  5.     expect(callTracker.any()).toBe(false);
  6.  
  7.     callTracker.track();
  8.  
  9.     expect(callTracker.any()).toBe(true);
  10.   });
  11.  
  12.   it("tracks that number of times that it is executed", function() {
  13.     var callTracker = new j$.CallTracker();
  14.  
  15.     expect(callTracker.count()).toEqual(0);
  16.  
  17.     callTracker.track();
  18.  
  19.     expect(callTracker.count()).toEqual(1);
  20.   });
  21.   :
  22. });

expectで取得される値と期待される値とを比較する形になります。



QUnit




QUnit

QUnit



QUnitは長く知られているユニットテストフレームワークになります。HTMLの結果画面を見たことがある方も多いのではないでしょうか。テストコードは次のように書きます。



  1. QUnit.test("prettydate basics", function( assert ) {
  2.   var now = "2008/01/28 22:25:00";
  3.   assert.equal(prettyDate(now, "2008/01/28 22:24:30"), "just now");
  4.   assert.equal(prettyDate(now, "2008/01/28 22:23:30"), "1 minute ago");
  5.   :
  6. });

元々jQueryから派生したツールと言うこともあり、jQuery必須となっています。



alexyoung/riotjs



riotjsはRubyのテストフレームワークRiotのJavaScript版です。テストは次のように記述します。



  1. Riot.run(function() {
  2.   context('basic riot functionality', function() {
  3.     given('some simple equality tests', function() {
  4.       asserts('a simple truth test should return true', true).isTrue();
  5.       asserts('isNull is null', null).isNull();
  6.     });
  7.  
  8.     given('another context', function() {
  9.       asserts('equals should compare strings as expected', 'test string').equals('test string');
  10.     });
  11.  
  12.     given('a context concerned with functions', function() {
  13.       asserts('asserts() should allow functions to be compared', function() {
  14.         return 'test string';
  15.       }).equals('test string');
  16.     });
  17.   });
  18.  
  19.   given('yet another context', function() {
  20.     asserts('equals should compare strings as expected', 'test string').equals('test string');
  21.   });
  22. });

ブラウザの他、RhinoやNodeでも動作します。



Unit testing framework for Javascript - Unit JS




Unit.js

Unit.js



Unit.jsもWebブラウザ、Nodeの両方で動作します。書き方が独特かも知れません。



  1. // By example, provided by Express framework and other modules.
  2. var req = {
  3.   headers: {
  4.     'content-type': 'application/json'
  5.   }
  6. };
  7. test.object(obj).hasProperty('name');
  8. test.object(obj).hasProperty('message', 'hello');
  9. test.string(str).startsWith('Hello');
  10. test.string(str).contains('world');
  11. test.string(str).match(/[a-zA-Z]/);
  12. test.value(req).hasHeader('content-type');
  13. test.value(req).hasHeader('content-type', 'application/json');
  14. // or
  15. test.value(req).hasHeaderJson();

testというオブジェクトがあり、その下に変数の型を指定してプロパティや文字の長さ、正規表現などでチェックを行います。



nathansobo/screw-unit



Screw.UnitはBDDフレームワーク(ビヘイビア駆動開発)になります。RSpecに似た記述で、より仕様が分かりやすい文章を使ってテストを記述します。



  1. describe("a nested describe", function() {
  2.   var invocations = [];
  3.  
  4.   before(function() {
  5.     invocations.push("before");
  6.   });
  7.  
  8.   describe("a doubly nested describe", function() {
  9.     before(function() {
  10.       invocations.push('inner before');
  11.     });
  12.  
  13.     it("runs befores in all ancestors prior to an it", function() {
  14.       expect(invocations).to(equal, ["before", "inner before"]);
  15.     });
  16.   });
  17. });

Protractor - end to end testing for AngularJS




Protractor

Protractor



ProtractorはAngularJS用のE2Eテストフレームワークになります。専用ということもありますのでAngularJSアプリの場合はProtractorを使うのが良さそうです。



  1. describe('angularjs homepage todo list', function() {
  2.   it('should add a todo', function() {
  3.     browser.get('https://angularjs.org');
  4.  
  5.     element(by.model('todoList.todoText')).sendKeys('write first protractor test');
  6.     element(by.css('[value="add"]')).click();
  7.  
  8.     var todoList = element.all(by.repeater('todo in todoList.todos'));
  9.     expect(todoList.count()).toEqual(3);
  10.     expect(todoList.get(2).getText()).toEqual('write first protractor test');
  11.  
  12.     // You wrote your first test, cross it off the list
  13.     todoList.get(2).element(by.css('input')).click();
  14.     var completedAmount = element.all(by.css('.done-true'));
  15.     expect(completedAmount.count()).toEqual(2);
  16.   });
  17. });

Mocha - the fun, simple, flexible JavaScript test framework




Mocha

Mocha



Mochaはシンプルなテストフレームワークになっています。ブラウザでもNodeでも動作します。コードはJasmineなどに近いものになります。



  1. var assert = require("assert")
  2. describe('Array', function() {
  3.   describe('#indexOf()', function () {
  4.     it('should return -1 when the value is not present', function () {
  5.       assert.equal(-1, [1,2,3].indexOf(5));
  6.       assert.equal(-1, [1,2,3].indexOf(0));
  7.     });
  8.   });
  9. });




今回紹介したフレームワークはWebブラウザやNodeで実行するものが多くなっています。そのため、MonacaアプリのJavaScript実装部分においてユニットテストができるでしょう。



もしOnsen UIを使われているならばProtractorは良い選択肢になるかと思います。品質高いアプリを目指し、しっかりとテストを作り込んでください。

オフラインの場合の処理をどうすれば良いか

カテゴリ :
Monaca
タグ :
JavaScript
HTML5
icon
アプリを作っていてたびたび話題にあがるオフライン処理について解説します。