2012-04-10 11 views
4

현재 백본/CoffeeScript 응용 프로그램에 일부 테스트를 통합하려고합니다.모카에서 테스트 할 창 정의

윈도우 객체에 구워진 응용 프로그램 용 모듈을 만들었지 만 윈도우가 정의되지 않았기 때문에 모카 테스트를 실행할 수 없습니다.

module = (name) -> 
    window[name] = window[name] or {} 
module 'Cart800' 

모카 용 창을 정의 할 수있는 방향은 무엇입니까?

jsdom을 사용하여 그런 방식으로 창을 만들었지 만 여전히 같은 오류가 발생했습니다. 미리 감사드립니다.

편집 :

사용 zombie.js는 jsdom를 사용하여 다음 더 저를 받고있다.

DOMWindow에 액세스하고 변수 값 중 하나를 설정하는 방법을 알아 내려고하고 있습니다.

browser.window가 Chrome 콘솔의 액세스 창에서 반환 된 것과 동일한 객체 였지만 이상적입니다.

내가

zombie.visit 'http://local.cart', (err, browser) -> 
    throw err if err 
    browser.window.Cart800 

이가 내 사양의 모든 전반에 걸쳐 사용할 수있는 전역 변수에 반환 무엇을 설정하는 저를위한 방법이 있나요으로 무엇을 찾고 있어요 액세스 할 수 있습니까?

beforeEach를 시도하거나 이전 블록을 메서드로 설정하고 그 메서드에 변수를 설정하려는 것 같지 않습니다.

답변

0

나는 당신이 응용 프로그램 (모카)의 노드 측면에서 실제 DOM 윈도우 객체를 전달하려고하는 것과는 반대로, 모의 윈도우를 원한다고 생각한다.

난 그냥 채찍질이 패턴을 시도는 (종류 I 읽고 모카 자습서에 부합 때 브라우저 (창에 변화 this 컨텍스트) 대 노드에서 실행 (수출) 사용

/** 
* My namespace is 'AV' 
*/ 
(function(root) { 
    /** 
    * @namespace root namespace object 
    */ 
    root['AV'] = root['AV'] || {}; 
    var AV = root['AV']; 

    AV.CoolThing = { 
     //... 
    }; 

    // this will give you 
    // your "window" object 
    // which is actually 
    // module.exports 
    return root; 

})(this); 

을 그런 다음 테스트는 다음과 같이 보일 수 있습니다 (광산은 coffeescript에도 있음).

chai = require 'chai' 
chai.should() 

# exports/"window" 
{ AV } = require '../src/AV.js' 

describe 'Sample test with namespace', -> 
    it 'should be an object', -> 
     AV.should.be.an 'object'