Node.js を使用して関数テストの実装方法_JavaScript スキルを実行する
情報
先週の会議で、同僚は現在 Java を使用して関数テストを作成していると述べましたが、その結果、冗長なコードが大量に生成され、プロジェクト全体が肥大化してきました。ここで、機能テストを迅速に構築するための単純なテンプレート プロジェクトが緊急に必要です。
後で戻って考えてみましたが、なぜ関数テストを行うのに Java を使用する必要があるのでしょうか?
Node.js は良い選択であり、json を自然にサポートしているため、github に戻って検索したところ、確かに関連プロジェクト testosterone があったので、このブログを思いつきました。
サーバー
デモを実行するには、それをサポートする対応するサーバーが必要になるのは当然です。
ここではサーバーとして Express を選択します。
まず、サーバー フォルダーを作成し、新しい package.json を作成します。
{
"name": " wine-cellar ",
"description": "ワインセラー アプリケーション",
"バージョン": "0.0.1",
"プライベート": true,
"依存関係": {
"express ": "3.x"
}
}
次にコマンドを実行します
npm install
Express がインストールされました。
実験用にいくつかの単純な get post メソッドを実装します
var Express = require('express')
、app =express();
app.use(express.bodyParser());
app.get('/hello', function(req, res) {
res.send("hello world");
});
app.get('/ ', function (req, res) {
setTimeout(function () {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end() ;
}, 200);
});
app.get('/hi', function (req, res) {
if (req.param('hello') !== 未定義) {
res.writeHead(200, {'Content -Type': 'text/plain'});
res.end('Hello!');
} else {
res.writeHead(500, {'Content-Type': 'text/プレーン'});
res.end('代わりに投稿を使用');
}
});
app.post('/hi', function (req, res) {
setTimeout(function () {
res.writeHead(200, {'Content-Type': 'text/plain'} );
res.end(req.param('メッセージ') || 'メッセージ');
}, 100);
});
app.get('/user', function(req, res) {
res.send(
[
{name:'jack'},
{name: 'トム'}
]
);
});
app.get('/user/:id', function(req, res) {
res.send({
id: 1,
name: "node js",
説明: "私はノード js"
});
});
app.post('/user/edit', function (req, res) {
setTimeout(function () {
res.send({
id:req.param('id' ),
status:1
});
}, 100);
});
app.listen(3000);
console.log('ポート 3000 でリッスンしています...');
テストステロン
サーバーをセットアップしたら、当然のことながらテストを開始します。
このプロジェクトのインターフェースは非常に洗練された名前が付けられており、コードに直接ロードできます。
まず、基本的な関数をテストします
var testosterone = require('testosterone')({port: 3000})
、assert = testosterone.assert;
テストステロン
.get('/hello',function(res){
assert.equal(res.statusCode, 200);
})
.get('/hi',function(res){
assert.equal(res.statusCode, 500);
})
.post('/hi', {data: {message: 'hola'}}, {
status: 200
,body: 'hola'
});
次に、上でシミュレートしたユーザーの投稿の取得に対して簡単なテストを実行します。
var testosterone = require('testosterone') ({ポート : 3000})
、assert = testosterone.assert;
テストステロン
.get('/user', function (res) {
var ExpectRes = [
{name:'jack'},
{name:'tom'}
];
assert.equal(res.statusCode, 200);
assert.equal(JSON.stringify(JSON.parse(res.body)),JSON.stringify(expectRes));
})
.get('/user/1', function (res) {
var user = JSON.parse(res.body);
assert.equal(res.statusCode, 200);
assert.equal(user.name, "node js");
assert.equal(user.description, "私はnode js");
})
次に、give when then を使用して各テスト ケースを記述したい場合は、次のようにすることができます:
var testosterone = require('testosterone') ({ポート : 3000, タイトル: 'テスト ユーザー API'})
、add = testosterone.add
、assert = testosterone.assert;
testosterone
.add(
'/user/{id} n にユーザー ID を与える'
'応答 user n がある場合'
'THEN はユーザー json を返すはずです',
function (cb) {
testosterone.get('/user/1', cb(function (res) {
var ExpectRes = {
id: 1,
name: "node js",
説明: "私はノード js"
};
assert.equal(res.statusCode, 200);
assert.equal(JSON.stringify(JSON.parse(res.body)), JSON.stringify(expectRes));
}));
})
.add(
'ユーザー情報を /user/edit n に POST したとき'
'検索の変更が成功したとき n'
'THEN はステータス 1 を返すはずです',
function (cb) {
testosterone.post('/user/edit', {data: {id: 1, name: "名前変更"}}, cb(function (res) {
var res = JSON.parse(res.body);
assert.equal(res.status, 1);
}));
}
)
.run(function () {
require('sys').print('done!');
});
結論
上記のコードを通して、testosterone は Java の長い http ヘッダー設定よりも実際にはるかに単純で洗練されていることがわかります。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









ノンブロッキングおよびイベント駆動に基づいて構築されたノード サービスには、メモリ消費量が少ないという利点があり、大量のネットワーク リクエストの処理に非常に適しています。大量のリクエストを前提として、「メモリ制御」に関する問題を考慮する必要があります。 1. V8 のガベージ コレクション メカニズムとメモリ制限 Js はガベージ コレクション マシンによって制御されます

この記事では、NodeJS V8 エンジンのメモリとガベージ コレクター (GC) について詳しく説明します。

ノード用の Docker イメージの選択は些細なことのように思えるかもしれませんが、イメージのサイズと潜在的な脆弱性は、CI/CD プロセスとセキュリティに大きな影響を与える可能性があります。では、最適な Node.js Docker イメージを選択するにはどうすればよいでしょうか?

ファイル モジュールは、ファイルの読み取り/書き込み/開く/閉じる/削除の追加など、基礎となるファイル操作をカプセル化したものです。ファイル モジュールの最大の特徴は、すべてのメソッドが **同期** と ** の 2 つのバージョンを提供することです。 asynchronous**、sync サフィックスが付いているメソッドはすべて同期メソッドであり、持たないメソッドはすべて異種メソッドです。

Node 19 が正式リリースされましたので、この記事では Node.js 19 の 6 つの主要な機能について詳しく説明します。

Node.js はどのように GC (ガベージ コレクション) を行うのでしょうか?次の記事で詳しく説明します。

イベント ループは Node.js の基本的な部分であり、メイン スレッドがブロックされていないことを確認することで非同期プログラミングが可能になります。イベント ループを理解することは、効率的なアプリケーションを構築するために重要です。次の記事では、Node のイベント ループについて詳しく説明します。お役に立てれば幸いです。

ノードが npm コマンドを使用できない理由は、環境変数が正しく設定されていないためです。解決策は次のとおりです: 1. 「システムのプロパティ」を開きます; 2. 「環境変数」->「システム変数」を見つけて、環境を編集します。変数; 3.nodejs フォルダーの場所を見つけます; 4.「OK」をクリックします。
