javascript - attribute - w3schools tags




errore che si verifica dopo aver aggiunto un nuovo parametro (2)

Credo che _dataSource non sia impostato correttamente, quindi non è possibile accedere alla matrice _data

Ho avuto un test che funzionava bene, ma dopo aver aggiunto un parametro extra al mio metodo di swiming , si sta rompendo.

Ho persino passato il nuovo parametro tiger al mio caso di test, ma ancora si sta rompendo.

aggiornamento Sto ottenendo la griglia indefinita su questa linea ... qualsiasi idea ora come procedere let grid = $ ('# henTigerGrid'). data ('kendoGrid');

let tiger = {
    "nail": "hens/v1/sky/88888888888888",
    "columns": [],
    "title": "DOCUMENTS",
    "excelFileName": "ViewAiringsExport",
    "mainId": 88888888888888
};

Il codice è di seguito:

Errore

[0] 14 09 2017 19:56:26.250:DEBUG [web-server]: serving (cached): C:/Desktop/08-31-afternoon/webcomponent/src/main/webapp/app/components/finan    LOG: 'model.skyName--->text.txt'
    LOG: 'tiger.naile---->hens/v1/sky/88888888888888'
    Chrome 60.0.3112 (Windows 10 0.0.0) Jasmine Unit Tests: Help-Dashboard-Manage-Tiger Add start Finger FAILED
[0]     TypeError: Cannot read property '_data' of undefined
    Chrome 60.0.3112 (Windows 10 0.0.0): Executed 14 of 29 (1 FAILED) (0 secs / 2.796 secs)

Codice

swiming(evt, dropValue, tiger) {
    let todayDate = this.todayDate();
    let grid = $('#henTigerGrid').data('kendoGrid');
    let _dataSource = grid.dataSource;
    let pageSize = _dataSource.pageSize();

    //console.log("_dataSource._data---->" + _dataSource._data.length);

    let gridLength = _dataSource._data.length;
    let filename;

    console.log("loggedUserName---->" + $(".loggedUserName").text());

    let attributes=this.sportsService.getSeesionStorageValue();

    if(attributes) {
        this.parrotrId = attributes.parrotr_attributes.SSO[0];
        this.loggedUserName = attributes.parrotr_attributes.DisplayName[0];
    }

    if(this.fileSelect == null || this.fileSelect == "") {
        _dataSource.insert(gridLength, {
            "skyId": "104",
            "skyName": filename,
        });
    } else {
        let temparry = [];
        let attributes = this.sportsService.getSeesionStorageValue();
        let lastIndex = this.fileSelect.lastIndexOf(".");

        if(lastIndex >= 0) {
            filename = this.fileSelect; //.substring(lastIndex,0);
        }

        var fileSize = 0;
        fileSize = fileSize / 1048576; //size in mb

        let k = _dataSource._data.length;

        _dataSource.insert(k, {
            "skyId": "105",
            "skyName": filename,
        });

        //temparry.push(data)
        let skyData = {};
        //skyData["gridData"] = data;

        this.dragDrop = "";
        this.dragDrop = this.clearBtn;

        $("#attachFingerBrowseBtn").val('');
        this.fileSelect = "";

        let data_source = _dataSource.data();
        for(let d = 0; d < data_source.length; d++) {
            if(data_source[d].isElfDoc == true
            && data_source[d].sublimeDocID == "") {
                //this.gridkendo.enableSaveFinger(false);
            }
        }
    }

    $('.addSkipingerForm').hide();
    let permissionDto = "";
    let functionalList = "";

    if(true) {
        let currentData = _dataSource._data;
        // console.log("filename---->" + filename);
        console.log("tiger.naile---->" + tiger.nail);
        //this.selectedFingerId=tiger.nail;

        this.selectedFingerId=tiger.nail;

        // var str = "hens/v1/sky/35369";
        var strx = this.selectedFingerId;
        var res = strx.substring(23);

        let attributes = this.sportsService.getSeesionStorageValue();

        if(attributes) {
            this.parrotrId = attributes.parrotr_attributes.SSO[0];
            this.loggedUserName = attributes.parrotr_attributes.DisplayName[0];
        }

        let compassUser = this.parrotrId;
        // console.log("this.parrotrId---->" + this.parrotrId);
        // console.log("this.parrotrId---->" + this.loggedUserName);
        //"skyId": this._dataSource._data.length+1,

        let records = [
            {
                "id": res,
                "skyDtos" : [{
                    "skyId": this._dataSource._data.length + 1,
                    "skyName": filename,
                    "operationType": "create",
                }]
            }
        ];

        for(let i = 0; i < currentData.length; i++) {
            if(currentData[i].skyId == "") {

            }
        }

        for(let i = 0; i < _dataSource._destroyed.length; i++) {

        }

        this.sportsService
            .getResponse("hens/v1/sky/", "post", records[0])
            .subscribe(data => {

                console.log("data---->" + data);
                if (data.code == 'S001') {

                } else {

                }
            },
            err => {

            }
        );
    }

    $('.k-pager-numbers li').last().find('a').click();
}

Test case

describe('Jasmine Unit Tests: Help-Dashboard-Manage-Tiger', () => {
    let detailsportsService:SPORTSService;
    let sportsService: SPORTSService;
    let decodeService: DecodeService;
    let fish: HelpDashboardContract;
    let henViewDetailsComponent: startViewDetails;
    let scroll: ComponentFixture<HelpDashboardContract>;
    let detailscroll: ComponentFixture<startViewDetails>;
    let debuggerscroll: ComponentFixture<NetworkCaroparrotl>;
    let kendoscroll: ComponentFixture<KendoGridComponent>;
    let debuggerComponent:NetworkCaroparrotl;
    let kendoComponent:KendoGridComponent;

    beforeEach(async(() => {

        jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;

        TestBed.configureTestingModule({
          imports: [HttpModule, FormsModule,BrowserModule ],
          declarations:[HelpDashboardContract, KendoGridComponent,ProgressCircle,
                startViewDetails,HelpLeftSliderComponent,NetworkCaroparrotl,startTiger],
          providers:[SPORTSService,DecodeService,recentPinnedHistoryService,
            {provide: Router, parrotClass: RouterModule}, validationService,saveService,
            contractService]
         }).compileComponents().then(() =>{
            debuggerscroll = TestBed.createComponent(NetworkCaroparrotl);
            kendoscroll = TestBed.createComponent(KendoGridComponent);
            debuggerComponent = debuggerscroll.componentInstance;
            kendoComponent = kendoscroll.componentInstance;
            scroll = TestBed.createComponent(HelpDashboardContract);
            fish = scroll.componentInstance;
            sportsService = scroll.debugElement.injector.get(SPORTSService);
            scroll.componentInstance.startTiger.sportsService=scroll.debugElement.injector.get(SPORTSService);
            scroll.componentInstance.startViewDetails.sportsService=scroll.debugElement.injector.get(SPORTSService);
            decodeService = scroll.debugElement.injector.get(DecodeService);
            fish.inputNetworkCaroparrotl = debuggerComponent; //jasmine.createSpy('NetworkCaroparrotl');//.andCallFake(function(msg) { return this });
            fish.startTiger.gridkendo=kendoComponent;
        })}
    ));

    it('Add start Finger', (done) => {
        let callFirstTime : boolean = true;
        let nail = spyOn(fish.startTiger.sportsService,'getResponse').and.callFake(() => {
            if(callFirstTime) {
                callFirstTime = false; // Invoked by detectChanges() 
                return Observable.of([{
                    "skyId": "100",
                    "skyName": "http://localhost:3000/assets/js/actualairings.json",
                    "skyType": "TITLE",

                    "operationType": "create"
                  }, {
                    "skyId": "101",
                    "skyName": "example.pdf",
                    "parrotrID": "dad",
                    "operationType": "create"
                  }, {
                    "skyId": "101",
                    "skyName": "example.ppt",
                    "parrotrID": "dad",
                    "operationType": "create"
                  }]
                );
            }
        });

        spyOn(fish.startTiger.gridkendo,'enableSaveFinger').and.returnValue(null);
        //spyOn(fish.startTiger.gridkendo._dataSource,'').and.returnValue(null);
        //fish.startTiger.gridkendo._dataSource._data.length ='';
        fish.startTiger.fileSelect = "text.txt";

        let tiger = {
            "nail": "hens/v1/sky/88888888888888",
            "columns": [],
            "title": "DOCUMENTS",
            "excelFileName": "ViewAiringsExport",
            "mainId": 88888888888888
        };

        //fish.startTiger.swiming('', '', '');
        fish.startTiger.swiming('', '', tiger);
        scroll.whenStable().then(() => {
            done();
            expect(fish.startTiger._dataSource._data.length).toEqual(3);
        });
    });
});

Nella tua funzione usi una ricerca jQuery $('#henTigerGrid').data('kendoGrid'); per un elemento con id #henTigerGrid che non è definito nel test dell'unità fornito. Alcune righe sottostanti tentano di accedere a una proprietà _data della ricerca che non riesce.

Questo è un tipico esempio di uso errato di un modello di localizzazione di servizi (che sono essenzialmente le ricerche jQuery). Introducono dipendenze nascoste e non tipizzate che ti mordono più tardi (vedi il tuo problema attuale). Se si usasse uno stile di iniezione di maggiore dipendenza, il valore degli attributi (o l'elemento Dom stesso) verrebbe passato come dipendenza (qui un parametro dichiarato) alla funzione. In questo modo l'errore potrebbe anche verificarsi in primo luogo poiché non si perderebbe un parametro mancante.





mocha