使用Siesta进行测试时,Ext.getStore()返回undefined

时间:2014-11-14 05:59:19

标签: javascript unit-testing extjs extjs4 siesta

在ExtJs应用程序中,为了使getStore工作控制器,在Application.js中添加了模型和存储。但是对于使用siesta进行测试,我无法在Application.js中进行任何更改。

直接调用Ext.getStore(storeId)返回undefined。我试过在preload中添加模型,但它没有帮助。

我该怎么做?

------------------------- testFile AnalysisController.t.js中的代码------------- --------

StartTest(function(t){

var testStore = Ext.getStore('Nm.store.analysis.TestStore'); //testStore is undefined

});

------------------------- testModel.js中的代码----------------- --------

Ext.define('Nm.model.analysis.TestModel', 
    {
    extend: 'Ext.data.Model',    
    fields: [ 
            {name:'lastName',type:'string'},
            {name:'age',type:'int'},
            {name:'relationDescription',type:'string'},
            {name:'dateOfBirth',type:'date',dateFormat: 'm-D-Y'}
            ]
    });

------------------------- testStore.js中的代码----------------- --------

Ext.define('Nm.store.analysis.TestStore',{
    extend : 'Ext.data.Store',
    requires: ['Nm.model.analysis.TestModel'],
    model : 'Nm.model.analysis.TestModel'
});

-------------------------线束文件testIndex.js中的代码--------------- -

var Harness = Siesta.Harness.Browser.ExtJS;

Harness.configure({
    title       : 'Samples',
    loaderPath  : { 'Nm' : 'app' },
    preload : [
        "http://cdn.sencha.io/ext/gpl/4.2.0/resources/css/ext-all.css",
        "http://cdn.sencha.io/ext/gpl/4.2.0/ext-all-debug.js"
    ]

});

Harness.start({
        group               : 'Controller',
        items               : [
            'test/AnalysisController.t.js'
        ]}
);

3 个答案:

答案 0 :(得分:0)

使用Ext.getStore()你必须注册我认为的商店。

plz read

答案 1 :(得分:0)

检查测试文件中是否定义了Ext。虽然Siesta支持Ext,但默认情况下未定义变量Ext。最简单的方法是在测试的顶部添加以下内容:

var Ext = test.global.Ext;

答案 2 :(得分:0)

加载"全球"通过Ext.getStore()存储,必须在应用程序中注册。

为此,请确保将其添加到主应用类

中的商店数组中
Ext.application({
    extend: 'Ext.app.Application',
    stores: [ add global store classes here ]
});