今回はモカとチャイの使い方についてお届けします。実際に使用する際の注意点は何ですか?
JavaScriptテストフレームワークの1つであり、これを使用してテストを追加および実行してコードの品質を確認できます
Mochaのnpm install -g mocha
npm install --save-dev mocha
"scripts": { "test": "mocha" }
test より下のレベルに対してのみ、test/ レベルでは実行されません)。サブテスト)。
ここで、index.js はテストされたコードです:/** * 加法函数 * @param {第一个数} a * @param {第二个数} b */ function addNum(a,b){ return a+b; } module.exports=addNum;
var addNum=require('../src/index') describe('测试index.js', function() { describe('测试addNum函数', function() { it('两数相加结果为两个数字的和', function() { if(addNum(1,2)!==3){ throw new Error("两数相加结果不为两个数字的和"); } }); }); });
テスト スクリプトには 1 つ以上の記述ブロックが含まれ、各記述ブロックには 1 つ以上の it ブロックが含まれる必要があります。上記の例では、addNum関数をテストします記述ブロックは「テスト スイート」と呼ばれ、関連するテストのセットを表します。これは、最初のパラメータがテスト スイートの名前 (「testindex.js」) であり、2 番目のパラメータが実際に実行される関数である関数です。
そのブロックは「テストケース」と呼ばれ、単一のテストを表し、テストの最小単位です。これも関数です。最初のパラメータはテスト ケースの名前 (「2 つの数値の加算は 2 つの数値の合計」)、2 番目のパラメータは実際に実行される関数です。
操作エラーがある場合、例外がスローされますこの時点で
npm test
を実行すると、次の結果が得られます
。操作エラーの結果を確認するには、index.js のコードを次のように変更しました:
function addNum(a,b){ return a+b-1; } module.exports=addNum;
再度実行
npm test
結果は次のようになります:
Mocha とアサーション ライブラリ Chai
これは、上記の例外スローメソッドをカプセル化したものであることが簡単に理解できます。判断が失敗した場合、例外がスローされます。
まず、chai:
npm install --save-dev chai
var expect = require('chai').expect; var addNum=require('../src/index') describe('测试index.js', function() { describe('测试addNum函数', function() { it('两数相加结果为两个数字的和', function() { expect(addNum(1,2)).to.be.equal(3); }); }); });
上記の構文は自然言語に非常に近く、式の結果が等しい(等しい)ことを期待(期待)します。表現 。
npm test
この図のアサーション ライブラリも、期待される結果 3 と実際の結果 2 を出力していることがわかります。
上記の構文はchaiのexpect構文であり、 should構文とasset構文もあります。
var assert = require('chai').assert; assert.typeOf(foo, 'string'); assert.equal(foo, 'bar'); assert.lengthOf(foo, 3) assert.property(tea, 'flavors'); assert.lengthOf(tea.flavors, 3);
Mocha のその他の使用法
mocha test/index.test.js
または複数の JS
mocha test/index.test.js test/add.test.js
もちろん、
wildcard を使用して、特定のすべての JS と JSX をテストすることもできますフォルダー: mocha 'test/some/*.@(js|jsx)'
/** * 加法函数 * @param {第一个数} a * @param {第二个数} b */ export default (a,b)=>{ return a+b-1; }
import {assert} from 'chai' import addNum from '../src/index' describe('测试index.js',()=> { describe('测试addNum函数', ()=> { it('两数相加结果为两个数字的和', ()=> { assert.equal(addNum(1,2),3) }) }) })
現時点ではモックを直接実行することは間違いなく不可能です。次に、babel:
npm install babel-core babel-preset-es2015 --save-dev
をインストールする必要があります。プロジェクト ディレクトリ .babelrc ファイルの下に新しいものを追加します:
{ "presets": [ "es2015" ] }
次に、package.json 内のスクリプトが次のように変更されます:
"scripts": { "test": "mocha --compilers js:babel-core/register" },
--compilers パラメーターは、テスト スクリプトのトランスコーダーを指定するために使用されます。このコマンド行は、使用することを意味します。 mocha /register モジュールを実行するときに最初に babel-core を実行し、.js ファイルを処理します
注:
--コンパイラーは公式には冗長ですが、代わりに"scripts": { "test": "mocha --require babel-core/register" },
Mocha默认每个测试用例最多执行2000毫秒,如果到时没有得到结果,就报错。以下命令设置超时时间为5000:
mocha -t 5000 index.test.js
Mocha默认会高亮显示超过75毫秒的测试用例,以下命令设置高亮判断的临界值:
mocha -s 1000 index.test.js
Mocha在describe块之中,提供测试用例的四个钩子:before()、after()、beforeEach()和afterEach()。它们会在指定时间执行。
describe('测试index.js',()=> { before(()=>console.info("在本区块的所有测试用例之前执行")) after(()=>console.info("在本区块的所有测试用例之后执行")) beforeEach(()=>console.info("在本区块的每个测试用例之前执行")) afterEach(()=>console.info("在本区块的每个测试用例之后执行")) describe('测试addNum函数', ()=> { it('两数相加结果为两个数字的和', ()=> { assert.equal(addNum(1,2),3) }) }) })
关于mock和chai常用的一些玩法都讲了,更多的关于mock的测试结果输出格式,以及skip跳过测试和only仅测试当前用例等玩法就不讲述了。
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
以上がモカとチャイの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。