javascript - 追加 - removeattr 複数




新しいパラメータを追加した後でエラーが発生する (2)

あなたの関数では、jQueryルックアップ$('#henTigerGrid').data('kendoGrid');を使用します$('#henTigerGrid').data('kendoGrid'); 提供されたユニットテストで定義されていないid #henTigerGridを持つ要素 あなたの下の_dataは、ルックアップの_dataプロパティにアクセスして失敗します。

これは、サービスロケータパターンの誤った使用(jQueryルックアップが本質的にある)の典型的な例です。 彼らは、後であなたを噛む隠れた、型なしの依存関係を導入します(あなたの現在の問題を見てください)。 より多くの依存性注入スタイルを使用する場合、属性値(またはDom要素自体)は依存関係(ここでは宣言されたパラメータ)として関数に渡されます。 同様に、欠落しているパラメータを逃さないため、最初にエラーが発生する可能性があります。

私はうまく動作するテストケースを持っていましたが、私のメソッドswimingに余分なパラメータtigerを追加した後、それは壊れています。

私はさらに新しいパラメータtigerをテストケースに渡しましたが、まだそれは壊れています。

グリッドを$ {'henTigerGrid'}としましょう。データ( 'kendoGrid');

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

コードは次のとおりです。

エラー

[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)

コード

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();
}

テストケース

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);
        });
    });
});

私は_dataSourceが正しく設定されていないと信じていますので、あなたはそれにアクセスすることはできません_data





mocha