2013-04-20 4 views
0

DOM을 조작하는 라이브러리에 대한 몇 가지 테스트를 작성하려면 zombiejs + mocha를 사용하고 document.createElement()와 같은 JavaScript 기본 함수를 사용합니다. 내 문제는 테스트 '문서가 정의되지 않았습니다'라는 예외가 발생합니다.Mocha + ZombieJs, 문서가 정의되지 않았습니다.

zombiejs 또는 jsDOM에 문제가 있습니까? 어떻게 해결할 수 있습니까? 여기

내 코드의 예입니다

HTML : tests.js에서

<!DOCTYPE html> 

<html> 
    <head> 
    <script src="mocha.js"></script> 
    <script src="expect.js"></script> 
    <title>XS UI Tests</title> 

    <script type="text/javascript" charset="utf-8" src="../lib/mylibrary.js"></script> 

    <script> 
     mocha.setup('bdd'); 
    </script> 
    </head> 

    <body> 
    <div id="table"></div> 
    <div id="controls"></div> 
    <div id="form"></div> 

    <div id="mocha"></div> 

    <script src="tests.js"></script> 
    </body> 
</html> 

:

var expect = require('expect.js') 
    , Zombie = require('zombie' ) 
    , browser = new Zombie({ debug: true }) 
; 

describe('XS UI Tests:', function() { 
    before(function(done) { 
    browser.visit('http://localhost:8080/test/ui.html', done); 
    }); 

    it('expect ui.html to be loaded', function() { 
    expect(browser.success).to.be(true); 
    }); 

    describe('Table Tests:', function() { 
    it('expect div#table (table container) to exist', function() { 
     expect(browser.query("#table")).to.be.ok(); 
    }); 
    }); 
}); 

여러분의 도움에 감사드립니다

답변

1

document 객체가 좀비 브라우저에 포함되어 있습니다. 코드에서 document을 찾지 못하면 좀비 샌드 박스 컨텍스트에서 실행하지 않는 것일 수 있습니다.

zombie.visit('/page/with/library')을 통해 라이브러리를로드 했습니까? 아니면 테스트 중에 직접 사용하고 싶습니까?

라이브러리가 아닌 전체 웹 페이지를 테스트하는 것이 가장 좋습니다. 라이브러리의 여러 기능을 테스트하는 버튼/링크가 몇 개있는 테스트 페이지를 만들어야하며 pressButton 또는 visit 좀비가있는 테스트 페이지를 만들어야합니다.

+0

답변 해 주셔서 감사합니다. 실제로 테스트 스크립트에서 'require'를 통해 라이브러리를로드합니다. 방금 ​​HTML에서 직접 테스트하는 라이브러리를로드하도록 코드를 수정했으나로드되지 않습니다! – Khalifa

+0

@Khalifa 브라우저에서 제대로 작동하는지 확인한 다음 좀비 API, 특히 [resources] (https://github.com/assaf/zombie/blob/master/src/zombie/resources)에 디버깅 문을 추가해보십시오. . 커피) 개체. – gcochard

+0

브라우저에서 문제없이 작동하고 이미 내 라이브러리에서 메시지를 디버깅했습니다. 내 라이브러리가로드되지 않은 것으로 보입니다! – Khalifa

관련 문제