1

测试函数的名称有什么限制吗?

当我将以下内容编写为testA()andtestB()时,它们都将被实现。

AjaxCreateTest = TestCase("AjaxCreateTest");  
AjaxCreateTest.prototype.testA = function(){};  
AjaxCreateTest.prototype.testb = function(){};

但是如果我将名称从“testB”更改为“AjaxCreateT”,testA()就会执行。太奇怪了。有人可以帮忙吗?

4

1 回答 1

3

JsTestDriver 仅执行以前缀“test”开头的方法。这是一种命名约定,使您能够在不作为测试执行的同一对象上编写辅助方法。

还有两个保留方法名setUptearDown,分别在每次测试之前和之后执行。

您甚至可以在测试名称中使用空格,这使您的测试具有很好的可读性,例如:

TestCase("AjaxCreateTest", {
    setUp : function() {
        this.subject = new MyAjaxCode();
        this.stubXHR();
    },

    tearDown : function() {
        this.restoreXHR();
    },

    stubXHR : function() {
        // stub global objects to intercept Ajax calls
    },

    restoreXHR : function() {
        // restore global state
    },

    "test should say hi" : function() {
        assertEquals("Hi", this.subject.sayHi());
    }
}

在上面的例子中只有一个测试,其余的都是辅助方法。

我可以推荐Sinon.JS来帮助您存根 Ajax 调用(请参阅“Fake XHR”)以及更多示例。

于 2012-04-28T09:33:49.280 回答