我目前正在编写一个 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 添加到正文
而已!