2017-03-11 2 views
0

저는 mochazombie을 사용하고 있습니다.
내 목표는 웹 사이트 <a>에서 데이터를로드 한 다음 웹 사이트에서 태그를 쿼리 이름과 href로로드하는 것입니다. 지금까지 작동 중입니다.약속을 사용하여 모카를 지연 시키십시오.

const Browser = require('zombie') 

const browser = new Browser() 

browser.visit('page',() => { 
    let temp = browser.document.querySelectorAll('a selector') 
    for (let i = 0; i < temp.length; i++) { 
     browsers.push({ name: temp[i].innerHTML, url: temp[i].href }) 
    } 
    delete temp 
}) 

다음 단계는이 데이터를 테스트에 사용하는 것입니다.

const data = [{ name: 'name', url: 'test' }] 
describe('test with for',() => { 
    for (let i = 0; i < data.length; i++) { 
     it(data[i].name,() => { 
      // test code with url of data[i] 
     }) 
    } 
}) 

I 가진 유일한 문제 data 배열 비동기 충전하고 it 함수를 호출시에 존재한다는 것이다. 그래서 내가이 일을 tryed

나는 before를 사용하여 tryed하지만 난 그것 (때문에 비동기 데이터에 따라 달라질 수 있습니다 실행 코드와 코드에 pased 유일한 기능을 중지하지 않는 비동기 함수를 호출) 여기 sence을하지 않는 것을보고 Promise을 사용했지만 실패했습니다.

const data = [] 
new Promise((resolve, reject) => { 
    // filing data 
    resolve() 
}).then(() => { 
    describe('...',() => { 
     for (let i = 0; i < data.length; i++) { 
      it (data[i].name,() => {}) 
     } 
    }) 
}) 

나는 모카 문서를 쳐다 보면서 솔루션을 찾을 수 없습니다 :/
가 어떻게이 문제를 해결해야합니다를?

답변

0

좋아, 해결책을 찾았는데, 내 실수로 내 브라우저에서 읽지 못했던 설명을 삭제하는 것을 잊어 버렸습니다. 이유는 - 지연이 작동하지 않습니다.

실행 코드 :

const { describe, it } = require('mocha') 
const { assert, expect } = chai = require('chai') 
const Browser = require('zombie') 

const browser = new Browser() 
const browsers = [] 

new Promise((resolve, reject) => { 
    browser.visit('site',() => { 
     let temp = browser.document.querySelectorAll('selector') 
     for (let i = 0; i < temp.length; i++) { 
      browsers.push({ name: temp[i].innerHTML, url: temp[i].href }) 
     } 
     delete temp 
     resolve() 
    }) 
}).then(() => { 
    describe('Get browser name',() => { 
     for (let i = 0; i < browsers.length; i++) { 
      it(browsers[i].name,() => { 

      }) 
     } 
    }) 
    run() 
}) 
관련 문제