Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
電算部ネットワーク講座
07
Node.js Ⅵ
目次


テストとは



品質の高いコードを書くために



テストフレームワーク



アサーションライブラリ



テストの書き方



テストの実行



mocha の便利な機能



非同期テスト



課題
テストとは


テストという言葉に、嫌なイメージを持っている方もいるかもしれません。



ですが、ここで言うテストはその類のテストとは違います。



今回扱うのは、プログラムが仕様を満たしているかどうか、検証するためのテ
ストです。
品質の高いコードを書くために


品質の高いコードを書くためには、バグが極力無いことが望ましいです。



完全に無くすことは、人間が完全でない以上無理ですが、テストコードを書く
ことによって、仕様を満たした品質の高いコードを書くことを可能...
テストフレームワーク


前々回、 Web Application Framework を扱いましたが、テストを書くためのフ
レームワークも存在します。



今回は mocha という、ブラウザでも Node.js でも使えるテストフレー...
アサーションライブラリ


テストには、フレームワークの他に Assertion Library を使います。



この変数の値はこうあるべき、という形式で個々に条件を指定します。



今回は、様々な表記の形式が選べる Chai とい...
テストの書き方


例: 引数 n を渡すと、n! (nの階乗) を返す関数 factorial をテストします。

function factorial(n) {
if (typeof n !== "number")
throw new T...
テストの書き方
// chai を読み込む
var expect = require("chai").expect;
describe("テスト対象の名称", function () {
it("テスト項目", function () {
//...
テストの実行


※ package.json の “scripts”: {“test”: “mocha”} を指定した後に



npm test



mocha を global インストールしてある場合



mocha
mocha の便利な機能


before(function () {
// ここに、テストケースを実行する前に行う、前処理を記述する
});



after(function () {
// ここに、テストケースを実行した後に行う、後処...
非同期テスト


データベースやネットワークを利用するコードのテストを書きたい場合に必要
になります。

it("user model", function (done) {
User.find(id, function (err, user...
課題


前回の続きで、 express で使うモデルに対して、そのテストを書いてみましょ
う。
Nächste SlideShare
Wird geladen in …5
×

後期講座07

Mocha と Chai を使った Node.js でのテストの書き方。

  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

後期講座07

  1. 1. 電算部ネットワーク講座 07 Node.js Ⅵ
  2. 2. 目次  テストとは  品質の高いコードを書くために  テストフレームワーク  アサーションライブラリ  テストの書き方  テストの実行  mocha の便利な機能  非同期テスト  課題
  3. 3. テストとは  テストという言葉に、嫌なイメージを持っている方もいるかもしれません。  ですが、ここで言うテストはその類のテストとは違います。  今回扱うのは、プログラムが仕様を満たしているかどうか、検証するためのテ ストです。
  4. 4. 品質の高いコードを書くために  品質の高いコードを書くためには、バグが極力無いことが望ましいです。  完全に無くすことは、人間が完全でない以上無理ですが、テストコードを書く ことによって、仕様を満たした品質の高いコードを書くことを可能にします。  テストコードを書くと、仕様を満たしているか自動的に判定することができま す。
  5. 5. テストフレームワーク  前々回、 Web Application Framework を扱いましたが、テストを書くためのフ レームワークも存在します。  今回は mocha という、ブラウザでも Node.js でも使えるテストフレームワー クを用います。  適当な場所に移動して作業ディレクトリを作成します。  mkdir test  package.json ファイルを生成します。  npm init  テストフレームワーク mocha をインストールします。  npm install mocha --save
  6. 6. アサーションライブラリ  テストには、フレームワークの他に Assertion Library を使います。  この変数の値はこうあるべき、という形式で個々に条件を指定します。  今回は、様々な表記の形式が選べる Chai というライブラリを用いて説明しま す。  早速、 npm からインストールしましょう。  npm install chai –-save
  7. 7. テストの書き方  例: 引数 n を渡すと、n! (nの階乗) を返す関数 factorial をテストします。 function factorial(n) { if (typeof n !== "number") throw new TypeError("n must be a natural number"); if (n < 0) throw new RangeError("n must be a natural number"); if (n <= 1) return 1; return n * arguments.callee(n - 1); }
  8. 8. テストの書き方 // chai を読み込む var expect = require("chai").expect; describe("テスト対象の名称", function () { it("テスト項目", function () { // テスト対象を実行 var res = factorial(0); // 期待する結果を定義 (例: 結果は 1 である) expect(res).to.be.equal(1); }); }); テストケース
  9. 9. テストの実行  ※ package.json の “scripts”: {“test”: “mocha”} を指定した後に  npm test  mocha を global インストールしてある場合  mocha
  10. 10. mocha の便利な機能  before(function () { // ここに、テストケースを実行する前に行う、前処理を記述する });  after(function () { // ここに、テストケースを実行した後に行う、後処理を記述する });  it.only 特定のテストケースだけを実行 (その他のテストケースは実行されない)  it.skip OR it(引数なし) テストケースを pending する (一時的に保留する)
  11. 11. 非同期テスト  データベースやネットワークを利用するコードのテストを書きたい場合に必要 になります。 it("user model", function (done) { User.find(id, function (err, user) { expect(user).to.be.an("object"); // 最後に呼ぶ done(); }); });
  12. 12. 課題  前回の続きで、 express で使うモデルに対して、そのテストを書いてみましょ う。

×