技术开发 频道

jQuery Mobile框架开发实战及效果展示

  【IT168技术】在本教程的上一篇(http://tech.it168.com/a2012/0111/1301/000001301499_all.shtml)中,为大家介绍了将要制作的记事本的总体架构,以及如何使用基于行为驱动模式开发的javascript框架jasmine进行简单的测试开发。在本文中,将指导大家使用jQuery Mobile框架进行实际的开发。

  在本篇教程完结后,读者将会看到如下的一个制作好的记事本界面的样子,如下图:

编写数据上下文模块

  下面我们开始对单元测试用例中编写修改的代码进行不断的重构,以达到我们的目的,这样的一个好处是能够很高效并且不编写多余的代码。

  编写数据上下文模块

  我们在第一篇教程中,使用jasmine编写了测试套件,第一个测试套件是如下所示:

   describe("Public interface exists", function () {
    it(
"Should have public interface to return notes list", function () {
        expect(Notes.app.getNotesList).toBeDefined();
    });
});

  第二个测试套件则为:

   describe("Public interface implementation", function () {
    it(
"Should return notes list", function () {
        var notesList
= Notes.app.getNotesList();
        expect(notesList instanceof
Array).toBeTruthy();
    });
})

  现在我们要对它们进行重构,尝试把它们整合为一个测试套件即可,如下代码所示:

  describe("Data Context tests", function () {
    it(“Exists in the app”,
function () {
        expect(Notes.dataContext).toBeDefined();
    });
    it(“Returns notes
Array”, function () {
        var notesList
= Notes.dataContext.getNotesList();
        expect(notesList instanceof
Array).toBeTruthy();
    });
});

  在第一个测试用例it()方法中,我们将应用app的实例参数改为dataContext,也就是凡是跟数据访问有关系的方法,都会放在这个类的实例中。在教程的第一篇中,app变量是如下的代码:

   Notes.app = (function () {
    var notesList
= [];
    
function getNotesList() {
        return notesList;
    }
    return {
        getNotesList: getNotesList
    }

})();

  当我们更换名称后,代码如下:

Notes.dataContext = (function () {
    var notesList
= [];
    
function getNotesList() {
        return notesList;
    }
    return {
        getNotesList: getNotesList
    }
})();

  同时,我们将App.js更名为DataContext.js,在更改后,目录文件如下图所示:

编写数据上下文模块

  当然,我们还要修改specrunner.html,将app.js修改为DataContext.js,如下:

<!-- App -->
<script type="text/javascript" src="app/DataContext.js"></script>

  现在我们再次运行Jasmine,打开specrunner.html,然后运行,可以看到如下的结果:

编写数据上下文模块

  这证明测试已经通过,简而言之,这里就是说我们将应用的模块名称改名了,叫做DataContext并且通过了单元测试。

2
相关文章