2016.5.11

4078 ワード

1.『ブラウザ側テスト:mocha,chai,phantomjs』
mocha initテストフレーム足場.
mocha init(エラーが表示され、mocha init fileがfileにある場合のみ正しい)
あるいはmocha init.(忘れないでね)
.
├── index.html       #  
├── mocha.css
├── mocha.js
└── tests.js         #  

ここでindex.htmlはユニットテストの入り口ですjsは私たちのテスト例ファイルです.
私たちは直接indexにいます.htmlは、上記の例のテストが必要な関数と、断言ライブラリchaijsを挿入します.そしてtests.jsに対応するテスト例を書き込む.
ここでindexが開きます.html、テスト結果を発見することができて、私達はブラウザの端のスクリプトのテストを完成しました(windowオブジェクトを呼び出したことに注意します)
1)テストスクリプト
「テストスクリプト」とは、ソースコードをテストするためのスクリプトです.
加算モジュールadd.jsのコードを次に示します.
// add.js
function add(x, y) {
  return x + y;
}

module.exports = add;

この加算モジュールが正しいかどうかをテストするには、テストスクリプトを書きます.
通常、テストスクリプトは、テストするソーススクリプトと同じ名前ですが、接尾辞名は.test.js(テストを表す)または.spec.js(仕様を表す)です.たとえば、add.jsのテストスクリプトの名前はadd.test.jsです.
// add.test.js
var add = require('./add.js');
var should = require('chai').should;

describe(' ', function() {
  it('1   1   2', function() {
    add(1, 1).should.equal(2);
  });
});

上のコードは、独立して実行できるテストスクリプトです.テストスクリプトには、1つ以上のdescribeブロックが含まれ、各describeブロックには1つ以上のitブロックが含まれなければならない.describeブロックを「テストキット」(test suite)と呼び、関連するテストのセットを表す.これは関数で、最初のパラメータはテストスイートの名前(「加算関数のテスト」)で、2番目のパラメータは実際に実行される関数です.itブロックを「テスト例」(test case)と呼び、単独のテストを表し、テストの最小単位である.これも関数です.最初のパラメータはテスト例の名前(「1に1を足すと2になるはずです」)で、2番目のパラメータは実際に実行される関数です.2)断言ライブラリ
昨日はshouldを習いましたが、今日見たのはexpectです.chaiというライブラリから入手できます.以下にexpectのいくつかの例を示します.自然言語に非常に近いものです
//  
expect(4 + 5).to.be.equal(9);
expect(4 + 5).to.be.not.equal(10);
expect(foo).to.be.deep.equal({ bar: 'baz' });

//  true
expect('everthing').to.be.ok;
expect(false).to.not.be.ok;

// typeof
expect('test').to.be.a('string');
expect({ foo: 'bar' }).to.be.an('object');
expect(foo).to.be.an.instanceof(Foo);

// include
expect([1,2,3]).to.include(2);
expect('foobar').to.contain('foo');
expect({ foo: 'bar', hello: 'universe' }).to.include.keys('foo');

// empty
expect([]).to.be.empty;
expect('').to.be.empty;
expect({}).to.be.empty;

// match
expect('foobar').to.match(/^foo/);

3)mochaの使い方
テストスクリプトがあれば、テストスクリプトを実行します.
$ mocha add.test.js

Mochaデフォルト運転testサブディレクトリのテストスクリプト.だから、普通はテストスクリプトをtestディレクトリの中にあり、実行されます.mochaパラメータは必要ありません
 2.正規表現
長い記憶過程.前に見たのに今また忘れてしまった.
ライブラリ.テストfunction速度を許さないbench..
4.npm install--saveとnpm install--save-devの違い
一つはpackageに置いてあります.jsonのdependencies、一つはdevDependenciesの中に置いてあります.
5.閉包及び閉包のピット
for (var i = 0; i < 5; i++) {
  setTimeout(function () {
    console.log(i);
  }, 5);
}

上記のコードブロックは5つの5を印刷しますが、予想される結果は0 1 2 3 4を印刷します.
なぜならsettimeoutのiは対外層iの参照であるからである.settimeoutのコードが解釈されると、実行時にiの参照が記録されるだけで、値ではありません.一方、settimeoutがトリガされると、5つのsettimeoutのiは同時に値を取られ、それらはいずれも外層の同じiを指し、そのiの値は反復完了時に5であるため、5を5回印刷した.
我々の予想した結果を得るために,iを局所変数に付与し,外層反復の影響から抜け出すことができる.
for (var i = 0; i < 5; i++) {
  (function (idx) {
    setTimeout(function () {
      console.log(idx);
    }, 5);
  })(i);
}

印刷結果:0 1 2 3 4
idx変数は関数ブロック内にのみ作用ドメインがあるからです.iが1に変化すると、新しいfunctionが呼び出される.このとき、従来のfunctionとは異なる(iが0のfunctionはスタックに押されて呼び出されていない)ため、このときのidxは新しい(以前のidxはこのfunctionに作用しない)必要がある
よく分かりました.
6.mysqlトレーニング
1)ユーザーと権限
2)mysqlでよく使われる関数
count/sum/max/min/avg/abs/round/cast/convert/ifnull/date_format/now/substr/concat
3)left join right join inner jion
3)groupby selectと一緒にいるときはselectの個数とgroup byの個数が一致していることに注意してください.そうしないとエラーになりやすいです
4)mysqlの等しくない番号<>
5)select文どのような文や関数が含まれていても元のデータベースの数値は変わりません
6)nullのフィールドまたは文字タイプであり、whereクエリで直接比較に使用することはできません.
7)mysqlイベント(イベントスケジューラ)