我目前正在寫一個JavaScript遊戲模塊,它採用以下參數作爲構造函數的參數:單元測試JavaScript和HTML方面
{
gameId : "string for unique game id",
cssSelector: "selector for target (used to initialze game)"
}
我已經找到一種方法來解決這個問題,請參見下面新評論
我對一切一個很好的測試覆蓋率,但我無法弄清楚如何寫下面的茉莉花測試:
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爲「發現」添加一個div的身體
這就是它!
選擇器本身是一個字符串。你用什麼來選擇DOM元素? jQuery,純js,... – kidwon
模塊本身依賴於jQuery,所以我只選擇像'$(cssSelector)'這樣的元素。沒有聽說過jQuery.pure.js - 我會檢查是否解決我的問題 - 謝謝! – pardahlman
不,我的意思只是js沒有框架 – kidwon