`
oray2011
  • 浏览: 7288 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

一个使用QUnit开发的分页的Store

    博客分类:
  • TDD
阅读更多

测试代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>Ext.dx.PagingStore</title>
    <link type="text/css" rel="stylesheet" href="qunit.css"/>
    <script type="text/javascript" src="ext/ext-base.js"></script>
    <script type="text/javascript" src="ext/ext-all.js"></script>
    <script type="text/javascript" src="qunit.js"></script>
    <script type="text/javascript" src="ext/custom.js"></script>
    <script type="text/javascript">
        var store = new Ext.dx.PagingStore({
            data:[1,2,3,4,5,6,7,8],
            fields:[],
            autoLoad:false
        });
        test("beforeload", function() {
            equals(store.getCount(), 0, "count");
            equals(store.getTotalCount(), 0, "totalCount");
        });
        asyncTest("load", function() {
            expect(3);
            ok(store.load({params:{start:0,limit:5}}), "success");
            equals(store.getCount(),5,"count");
            equals(store.getTotalCount(), 8, "totalCount");
            start();
        });
        asyncTest("loadWithNoEnoughElements", function() {
            expect(2);
            ok(store.load({params:{start:0,limit:10}}), "success");
            equals(store.getCount(),8,"count");
            start();
        });
        asyncTest("loadOutOfElementBounds", function() {
            expect(2);
            ok(store.load({params:{start:10,limit:10}}), "success");
            equals(store.getCount(),0,"count");
            start();
        });
        asyncTest("autoLoad", function() {
            expect(1, "unload");
            var loaded = false;
            var store = new Ext.dx.PagingStore({
                fields:[], data:[1],autoLoad:true,
                proxy:{
                    on:function() {
                    },
                    relayEvents:function() {
                    },
                    request:function() {
                        ok(true);
                    }
                }
            });
            start();
        });
        test("shouldRaiseExceptionWhenDataWasNull", function() {
            try {
                new Ext.ds.PagingStore({});
                throw "Should raise exception when data was null";
            } catch(expected) {
                ok(true);
            }
        });

    </script>
</head>
<body>
<h1 id="qunit-header">QUnit Test Suite</h1>

<h2 id="qunit-banner"></h2>

<div id="qunit-testrunner-toolbar"></div>
<h2 id="qunit-userAgent"></h2>
<ol id="qunit-tests"></ol>
<div id="qunit-fixture">test markup</div>
</body>
</html>

 

源码:

 Ext.dx = {};Ext.dx.PagingMemoryProxy = Ext.extend(Ext.data.MemoryProxy, {
    doRequest:function(action, rs, params, reader, callback, scope, arg) {
        params = params || {};
        var data = this.readSubRecords(params);
        var result;
        try {
            result = reader.readRecords(data);
        } catch(e) {
            this.fireEvent("loadexception", this, null, arg, e);
            this.fireEvent('exception', this, 'response', action, arg, null, e);
            callback.call(scope, null, arg, false);
            return;
        }
        result.totalRecords = this.data.length;
        callback.call(scope, result, arg, true);
    },
    readSubRecords:function(params) {
        var start = params.start || 0;
        var end = start + (params.limit || 0);
        return this.data.slice(start, end);
    }
});
Ext.dx.PagingStore = Ext.extend(Ext.data.Store, {
    constructor:function(c) {
        var data = c.data;
        if (c.data)
            delete c.data;
        Ext.dx.PagingStore.superclass.constructor.call(this, Ext.applyIf(c, {
            reader:new Ext.data.ArrayReader(c),
            proxy:new Ext.dx.PagingMemoryProxy(data)
        }));
    }
});
 
分享到:
评论

相关推荐

    QUnit是Nodejs的一个单元测试框架

    QUnit 是一个广泛使用的JavaScript单元测试框架,尤其适用于前端开发者,但它同样能在Node.js环境中运行。这个框架的主要目的是为了帮助开发者编写可靠、可维护的代码,通过自动化测试确保每个独立的代码单元(如...

    QUnit单元测试Demo

    1. **测试套件(Test Suite)**:QUnit中的测试套件是一组相关的测试,它们通常对应于一个特定的模块或功能。你可以通过`module()`函数定义一个测试套件。 2. **测试(Test)**:每个测试都是一个独立的功能验证,...

    QUnit前台JS测试框架——实例

    测试脚本中,可以使用`QUnit.test`定义测试,其中传入一个描述和一个回调函数。回调函数内部,我们可以编写断言来检查代码的功能。例如,可能测试一个自定义的JS函数,确保它能正确地处理输入和返回预期的结果。 2....

    qunit单元测试demo

    7. **使用示例**:"qunit单元测试demo"中可能包含一个简单的测试用例,演示了如何设置测试环境,定义测试用例,以及如何断言预期结果。这可以帮助初学者快速理解和上手QUnit。 8. **集成开发环境**:QUnit可以与...

    Qunit 1.20

    QUnit 是一个功能强大的JavaScript单元测试框架,尤其在Web开发中被广泛使用。它为JavaScript代码的测试提供了全面而严谨的解决方案,确保代码质量并减少软件缺陷。1.20版本是QUnit的一个重要里程碑,虽然官网访问...

    qunit chm + qunit.js + qunit.css

    qunit chm 中文 + qunit.js + qunit.css qunit chm 中文 + qunit.js + qunit.css qunit chm 中文 + qunit.js + qunit.css

    前端开源库-gulp-qunit-harness

    使用 `gulp-qunit-harness` 首先需要安装这个插件,然后在Gulp配置文件中创建一个任务。插件会自动加载HTML测试页面,并运行其中包含的 `QUnit` 测试。你可以配置插件参数,例如指定测试URL、设置覆盖率报告、错误...

    node-qunit, 用于nodejs的QUnit runner.zip

    node-qunit, 用于nodejs的QUnit runner 面向 Node.js的测试框架 https://qunitjs.comhttps://github.com/jquery/qunit特性adv 。clitestrunner api通过伊斯坦布尔测试覆盖率一个tes

    qunit api.htm

    QUnit是一个强大的JavaScript单元测试框架,该框架是由jQuery团队的成员所开发,并且是jQuery的官方测试套件。 名气功能很强大,但是使用起来并不复杂,但是网络上的教程大部分都有错漏,建议看看api再批判的学习吧

    qunit代码和文档

    QUnit 是一个强大的JavaScript单元测试框架,用于确保代码的质量和稳定性。它被广泛应用于jQuery、jQuery UI以及其他JavaScript库和应用程序的开发中。本压缩包包含了QUnit的核心代码、相关文档以及实用指南,可以...

    qunit 1.5 js 单元测试

    每个测试用例都是一个独立的模块,使用`QUnit.module()`定义。在模块内部,可以使用`QUnit.test()`来创建具体的测试。 2. **断言方法** QUnit 提供了一系列断言(assertion)方法,如`equal()`, `notEqual()`, `...

    Qunit源代码

    qunit是一个测试框架,Assert.equal

    TypeScriptUTWorkflows:使用qunit和grunt进行单元测试打字稿的不同基础设置

    而QUnit是jQuery项目开发的一个开源的JavaScript单元测试框架,它简单易用,支持异步测试,非常适合对JavaScript代码进行测试。Grunt则是一个JavaScript任务运行器,能够自动化构建过程,包括编译、压缩、测试等。 ...

    前端项目-qunit.zip

    QUnit 是一个由 jQuery 项目团队开发的开源 JavaScript 测试框架,专门用于进行单元测试。它为开发者提供了一套强大的工具,确保前端代码的质量和稳定性,尤其在复杂项目的开发过程中,QUnit 的应用能够显著提高代码...

    前端开源库-qunit-harness

    QUnit 是一个强大的JavaScript单元测试框架,由jQuery项目团队开发,广泛应用于JavaScript代码的质量保证。而 QUnit Harness 则是 QUnit 的一个重要补充,它提供了方便的工具和方法,让测试过程更加顺畅和自动化。 ...

    testing:初学者如何用qunit测试网页的总结

    QUnit 是一个 javascript 框架,您可以在构建软件时使用它来测试软件。 学习如何使用 QUnit 以便您可以在构建软件时对其进行测试,从长远来看,这将节省您的时间。 测试将确保您只编写最少量的代码来让您的软件完成...

    Backbone.js应用程序开发

    , 《backbone.js应用程序开发》先从了解mvc、spa和backbone的基本知识开始,然后着手构建示例应用程序——一个简单的todo列表应用程序、restful风格的图书应用程序、以及使用backbone和requirejs的模块化应用程序。...

    适用于Node.js的QUnit运行程序-JavaScript开发

    js https://qunitjs.com https://github.com/qunitjs/qunit功能cli testrunner api通过一个测试文件内部的istanbul测试进行api测试覆盖,可同步运行,但每个测试文件均在其自身的派生节点中运行的每个文件均运行并行...

    QUnit jQuery的TDD框架

    QUnit是一个基于JavaScript的测试驱动开发(TDD)框架,它由jQuery的开发者设计和维护。QUnit最初是为了测试jQuery项目本身而开发的,但很快就被用作独立的JavaScript库的测试框架。它为开发者提供了一种简单有效的...

Global site tag (gtag.js) - Google Analytics