現在、次のパラメーターをコンストラクター引数として受け取る JavaScript ゲーム モジュールを作成しています。
{
gameId : "string for unique game id",
cssSelector: "selector for target (used to initialze game)"
}
これを回避する方法を見つけました。以下の新しいコメントを参照してください
他のすべてについてはかなり良いテスト カバレッジがありますが、次の Jasmine テストの書き方がわかりません。
describe("Initialization of game", function() {
it("Should throw expection if css selector is not found", function() {
// what goes here?
//negative scenario
expect(function(){
var game = new Game({gameId : '1', cssSelector : "#not-found"});
}).toThrow("Cannot find the element corresponding to cssSelector");
//positive senario
expect(function(){
var game = new Game({gameId : '1', cssSelector : "#found"});
}).not.toThrow("Cannot find the element corresponding to cssSelector");
});
「解決策」 私が「解決策」と言うのは、これを回避するのが少しハックのように感じるからです。テストが HTML で実行され、環境を操作できるという事実を利用します。だから私がしたことは:
- 否定的なシナリオでは、見つからない指定子を使用します。最初の期待は失敗しません。
- 肯定的なテスト ケースと否定的なテスト ケースの間で、jQuerys .append() メソッドを使用して、id "found" を持つ div を本文に追加しました。
それでおしまい!