2017-02-12 11 views
0

ジャスミン(ver.2.4)JavaScriptテストフレームワークに問題があります。ジャスミンJavaScriptテストフレームワークの評価に関する問題

私はudemy.comでコースを作成していますが、オンラインチェッカーはコードの最後の部分を受け付けません。ここで私は "expect(variable).toBe(true);"ジャスミンの機能

describe('A div with class', function() { 
    var parent = document.getElementsByClassName('media')[0]; 

    it('"media" should exist.', function() { 
    expect(parent).toBeDefined(); 
    }); 

    var child = document.getElementsByClassName('media-body')[0]; 

    it('"media-body" should exist.', function() { 
    expect(child).toBeDefined(); 
    }); 

}); 

describe('A div with class "media"', function() { 
    var parent = document.getElementsByClassName('media')[0]; 
    var child = document.getElementsByClassName('media-body')[0]; 

    var answer; 

    if (parent.firstChild == child) { 
    answer = true; 
    } else { 
    answer = false; 
    } 

    it('should have a div with class "media-body" as its child.', function() { 
    expect(answer).toBe(true); 
    }); 

}); 

udemy.comページから私のテスト出力は次のようになります。

その子としてメディア・ボディ 『『クラスとdiv要素を持っている必要があり、』メディア「クラスでdivの』

予想されます。 「本当であるにはfalse現在、非常にうまく機能し

私の更新されたコード:

describe('A div with the class', function() { 

var class1 = 'media'; 
var failClass1 = '"' + class1 + '"' + ' should exist.' 

var class2 = 'media-body'; 
var failClass2 = '"' + class2 + '"' + ' should exist.' 

var element1 = null; 
var element2 = null; 

var relationship1_2 = null; 
var failRelationship = '"' + class2 + '"' + ' should be nested in a div with the class "' + class1 + '".' 

beforeEach(function() { 
    element1 = document.getElementsByClassName(class1)[0]; 
    element2 = document.getElementsByClassName(class2)[0]; 
    relationship1_2 = element1.contains(element2); 
}) 

it(failClass1, function() { 
    expect(element1).toBeDefined(); 
}); 

it(failClass2, function() { 
    expect(element2).toBeDefined(); 
}); 

it(failRelationship, function() { 
    expect(relationship1_2).toBe(true); 
}); 

});

+0

あなたは 'expect(parent.firstChild ===子).toBe(true);'に書き直して、6行のコードを保存したいと思うかもしれません。 –

答えて

0

私は、次の例のようにbeforeEachブロックを使用して再編成することをお勧めします:

describe('testing media tag hierarchy', function() { 

    var parent = null; 

    beforeEach(function() { 
    parent = document.getElementsByClassName('media')[0]; 
    }) 

    it('"media" should exist.', function() { 
    expect(parent).toBeDefined(); 
    }); 

    it('should have a div with class "media-body" as its child.', function() { 
    expect(parent.firstChild.hasClass('media-body')).toBeTruthy(); 
    }); 
}); 

私はこれがあなたの問題を解決しますかわからないが、それはかもしれない...それは読みやすいです。

+0

そういう意味で読みやすいですが、残念ながら私の問題は解決しません。テスト出力に「Expected HTMLNode to HTMLNode」と表示されます。私にとって本当に役に立たない。 udemy.comの実装がこれらのエラーを引き起こすか、それとも本当に私が(そしてあなたが)間違っているのか疑問があります。他の手がかりは? –

+0

問題は、オブジェクトが同じではないためです。要素が 'media-body'タグを持っているかどうかだけチェックしたいので、オブジェクトを比較するのではなく、その例を更新することができます。私はそれを更新し、あなたがそれが助けられたかどうか教えてください:) –

+0

私はそれを他のコードで動作させました。残念ながら、このコメントには長すぎるのでコードを投稿することはできませんが、私の最初の投稿の一番下に新しいコードと作業コードが表示されます。 私はあなたの更新された例を試していませんが、それも可能な解決策であるようです! –

関連する問題