Jasmine Test

Jasmine - JavaScript Test Framework https://github.com/pivotal/jasmine わざと間違えてます。

by Tetsuwo OISHI

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/jasmine/1.3.1/jasmine.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jasmine/1.3.1/jasmine-html.js"></script>
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jasmine/1.3.1/jasmine.css">

CSS

body {
/*  font-family: "Helvetica Neue Light", "Lucida Grande", "Calibri", "Arial", sans-serif;*/
  font-family: Arial, sans-serif;
  line-height: 1.6;
  padding: .5em;
  margin: 0;
}

input[type="checkbox"] { vertical-align: middle; }

.jasmine_reporter a:visited, .jasmine_reporter a {
  color: #303; 
}

.jasmine_reporter a:hover, .jasmine_reporter a:active {
  color: blue; 
}

.run_spec {
  float: right;
  padding-right: 5px;
  font-size: .8em;
  text-decoration: none;
}

.jasmine_reporter {
}

.banner {
  color: #303;
  background-color: #fef;
  padding: .3em;
  margin-bottom: .8em;
}

.logo {
  float: left;
  font-size: 1.1em;
  padding-left: 5px;
}
.logo .version {
  font-size: .6em;
  padding-left: 1em;
}

.runner.running {
  background-color: yellow;
}


.options {
  text-align: right;
  font-size: .8em;
}


.suite {
  border: 1px solid #ccc;
  margin: .3em 0;
  padding: .2em .2em .2em 1em;
}
.suite .suite {
  margin: 5px; 
}
.suite.passed {
  background-color: #dfd;
}
.suite.failed {
  background-color: #fdd;
}

.spec {
  margin: 5px;
  padding-left: 1em;
  clear: both;
}
.spec.failed, .spec.passed, .spec.skipped {
  padding-bottom: 5px;
  border: 1px solid #ddd;
}
.spec.failed {
  background-color: #fbb;
  border-color: red;
}
.spec.passed {
  background-color: #bfb;
  border-color: green;
}
.spec.skipped {
  background-color: #bbb;
}

.messages {
  border-left: 1px dashed gray;
  padding-left: 1em;
  padding-right: 1em;
}

.passed {
  background-color: #cfc;
  display: none;
}
.failed {
  background-color: #fbb;
}
.skipped {
  color: #777;
  background-color: #eee;
  display: none;
}


.resultMessage span.result {
  display: block;
  line-height: 2em;
  color: black;
}
.resultMessage .mismatch {
  color: #000;
}

.stackTrace {
  white-space: pre;
  font-size: .8em;
  margin-left: 10px;
  max-height: 5em;
  overflow: auto;
  border: 1px inset #f00;
  padding: 1em;
  background-color: #eef;
}

.finished-at {
  padding-left: 1em;
  font-size:...

JavaScript

/**
 * slugify
 * 文字列を渡すと文字列の先頭末尾から空白を除き、
 * その他の空白を -(ハイフン)に置き換えて返却する
 *
 * @param string
 * @return string
 */
function slugify(str) {
    return str.replace(/^\s+|\s+$/g, '')
              .replace(/\s/g, '-');
}

describe('slugify 文字列操作関数のテスト', function() {

    it ('先頭に空白がある文字列を渡すと先頭の空白を除いた文字列が返ってくる', function() {
        expect(slugify(' hoge')).toEqual('hoge');
    });
    
    it ('末尾に空白がある文字列を渡すと末尾の空白を除いた文字列が返ってくる', function() {
        expect(slugify('fuga ')).toEqual('fuga');
    });
    
    it ('先頭末尾に空白がある文字列を渡すと先頭末尾の空白を除いた文字列が返ってくる', function() {
        expect(slugify(' moga ')).toEqual('moga');
    });
    
    it ('先頭末尾以外に空白がある文字列を渡すと空白をハイフンに置き換えた文字列が返ってくる', function() {
        expect(slugify('hoge fuga')).toEqual('hoge-fuga');
    });
    
});

// run
jasmine.getEnv().addReporter(new jasmine.TrivialReporter());
jasmine.getEnv().execute();


(function(){
    setTimeout(function() {
        document.getElementById('__jasmine_TrivialReporter_showPassed__').click();
    }, 500);
})();