Jasmine

手軽に使えるのでよいです。

Overview

  • DL
  • フォルダ構成
  • テストコード

Input

Jasmine Jasmine Release Jasmine Docs 3.0 Jasmine spec覚え書き

Proccess

  1. DL
  2. srcにテスト対象コード(これは任意
  3. specフォルダにテストコード追加
  4. SpecRunner.jsにファイル参照追加
  5. テストコード書いて
  6. 実装
  7. 5-6繰り返す

DL

Jasmine ReleaseからDL 3.1

</jasmine-standalone-3.1.0/
▸ lib/
▾ spec/
    TemplateCodeSpec.js
▾ src/
    TargetClass.js
  MIT.LICENSE
  SpecRunner.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Jasmine Spec Runner v3.1.0</title>

    <link rel="shortcut icon" type="image/png" href="lib/jasmine-3.1.0/jasmine_favicon.png">
    <link rel="stylesheet" href="lib/jasmine-3.1.0/jasmine.css">

    <script src="lib/jasmine-3.1.0/jasmine.js"></script>
    <script src="lib/jasmine-3.1.0/jasmine-html.js"></script>
    <script src="lib/jasmine-3.1.0/boot.js"></script>

    <!-- include source files here... -->
    <script src="src/TargetClass.js"></script>

    <!-- include spec files here... -->
    <script src="spec/TemplateCodeSpec.js"></script>

  </head>

  <body>
  </body>
</html>

/**
 * <テストの説明(各テストのグルーピング単位)>
 */
describe('TemplateCode', function() {

  /**
   * テスト対象
   */
  var testInstance;

  /**
   * 事前処理
   */
  beforeEach(function() {
    console.log('beforeEach called');
    // eslint-disable-next-line no-undef
    testInstance = new TargetClass();
  });

  /**
   * 事後処理
   */
  afterEach(function() {
    console.log('afterEach called');
  });

  /**
   * 検証
   */
  it('testname', function() {

    // 一致
    expect(testInstance.getStringVal()).toBe('expected');
    expect(testInstance.getIntVal()).toBe(9876543210);
    expect(testInstance.getObjVal()).toEqual({'foo': ['bar', 'baz']});
    // 含まれているか
    expect(testInstance.getArrayVal()).toContain(20);
    expect(testInstance.getStringVal()).toContain('pect');
    // 正規表現
    expect(testInstance.getStringVal()).toMatch(/pected$/);
    expect(testInstance.getStringVal()).toMatch('pect');
    // undefined検証
    expect(testInstance.getDefinedVal()).toBeDefined();
    // 等号・不等号・符号付き不等号
    expect(testInstance.getGtVal()).toBeGreaterThan(3);
    expect(testInstance.getGtEqVal()).toBeGreaterThanOrEqual(25);
    expect(testInstance.getLtVal()).toBeLessThan(0);
    expect(testInstance.getLtEqVal()).toBeLessThanOrEqual(123);

  });

  /**
   * describeは入れ子OK
   */
  //  describe("TemplateCode", function() {
  //    var player;
  //    beforeEach(function() {
  //      player = new Player();
  //      song = new Song();
  //    });
  //    it("testname", function() {
  //
  //      expect(player.currentlyPlayingSong).toEqual(song);
  //      expect(player).toBePlaying(song);
  //    });
  //  });

});

(function(global){
  'use strict';
  function TargetClass() {
  }
  TargetClass.prototype.getStringVal = function(){
    return 'expected';
  };
  TargetClass.prototype.getIntVal = function() {
    return 9876543210;
  };
  TargetClass.prototype.getObjVal = function() {
    return {'foo': ['bar', 'baz']};
  };
  TargetClass.prototype.getArrayVal = function() {
    return [10, 20, 30];
  };
  TargetClass.prototype.getDefinedVal = function() {
    return this.getStringVal();
  };
  TargetClass.prototype.getGtVal = function() {
    return 4;
  };
  TargetClass.prototype.getGtEqVal = function() {
    return 25;
  };
  TargetClass.prototype.getLtVal = function() {
    return -1;
  };
  TargetClass.prototype.getLtEqVal = function() {
    return 123;
  };
  global['TargetClass'] = TargetClass;
})(this);

Output

失敗時(e.g)getLtValを0を返却させて失敗させる)

  TargetClass.prototype.getLtVal = function() {
    return 0;
  }

fail

成功時 fail


  • サポート状況 Next