バックボーンアプリを作成していますが、自動テストが必要です。自動テストにはセレンを使用したくない。
JasmineとCucumber.jsを調べています。Jasmineの方が良いと思いますが、私が働いている会社では、サーバー側のテストにキュウリを使用しており、cucumber.jsを本番環境に使用できるかどうかを調査しています。
助言がありますか?
バックボーンアプリを作成していますが、自動テストが必要です。自動テストにはセレンを使用したくない。
JasmineとCucumber.jsを調べています。Jasmineの方が良いと思いますが、私が働いている会社では、サーバー側のテストにキュウリを使用しており、cucumber.jsを本番環境に使用できるかどうかを調査しています。
助言がありますか?
Cucumber.jsは非常に安定しており、本番環境で使用する準備ができています。ただし、シナリオのアウトラインや(現在利用可能な)変換など、Cucumberrubyと比較していくつかの高度な機能が欠けています。開発ステータステーブルについては、 READMEを参照してください。
Zombie.js、Phantom.js、Seleniumで使用でき、ブラウザー内でも使用できます。事実上、Cucumberステップ定義内で任意のアサーション/テストライブラリを使用できます。
Andreasが指摘したように、Jasmineは単体テスト/仕様を対象としていますが、Cucumberは(アプリケーションスタック全体をヒットする)受け入れテストツールです。
Cucumber.jsの使用を開始する際にサポートが必要な場合は、遠慮なく私にpingしてください(Twitterの@ jbpros、Freenode /#cucumberのjbpros)。
@jbprosの回答にコメントを追加するのに十分なポイントがありませんが、ここで説明したように、シナリオの概要がcucumber.jsで完成していることに注意してください。
例えば:
世界:
// features/support/world.js
var zombie = require('zombie');
var World = function World(callback) {
this.browser = new zombie(); // this.browser will be available in step definitions
this.visit = function(url, callback) {
this.browser.visit(url, callback);
};
callback(); // tell Cucumber we're finished and to use 'this' as the world instance
};
exports.World = World;
特徴:
Scenario Outline: eating
Given there are <start> cucumbers
When I eat <eat> cucumbers
Then I should have <left> cucumbers
Examples:
| start | eat | left |
| 12 | 5 | 7 |
| 20 | 5 | 15 |
| 200 | 65 | 135 |
| 200 | 5 | 194 |
ステップの定義:
var aTest = function () {
this.World = require("../support/world.js").World;
this.start = 0;
this.eat = 0;
this.Given(/^there are (\d+) cucumbers$/, function(number, next) {
this.start = parseInt(number);
callback();
});
this.When(/^I eat (\d+) cucumbers$/, function (number, next) {
this.eat = parseInt(number);
callback();
});
this.Then(/^I should have (\d+) cucumbers$/, function (number, next) {
var left = this.start - this.eat;
if ( left != number)
callback.fail(new Error("This test didn't pass, I started with: " + this.start
+ ", ate: " + this.eat
+ " and was left with: " + left
+ ". Expected: " + number));
callback();
});
};
module.exports = aTest;
busterjsとjstestdriverはどちらも、 テストページをホストする独自のサーバーを起動できます。ブラウザを自動的に起動してテストページを開くだけです。テストはブラウザで実行され、結果をサーバーに報告します。サーバーでは、Mavenで読み取り可能な形式で保存できます。Jasmine用のMavenプラグインもあることに注意してください