2012-04-10 9 views
4

Ich versuche einige Tests in meine aktuelle Backbone/CoffeeScript-Anwendung zu integrieren.Definieren des Fensters zum Testen in Mocha

Ich habe ein Modul für meine Anwendung in das Fenster-Objekt gebacken, aber alle Mocha-Tests fehlschlagen, weil Fenster nicht definiert ist.

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

Irgendeine Richtung, wie ich Fenster für Mokka definieren kann?

Ich habe versucht, jsdom und ein Fenster auf diese Weise, aber es hat immer noch den gleichen Fehler. Danke im Voraus.

EDIT:

Mit zombie.js wird mich immer weiter dann jsdom verwenden.

zombie = require 'zombie' 
browser = new zombie.Browser 
browser.window.location = 'http://local.cart' 

Ich versuche einen Weg zu finden, auf das DOMWindow zuzugreifen und eine Variable auf einen seiner Werte zu setzen.

Es wäre ideal, wenn browser.window das gleiche Objekt ist, das vom Zugriff auf das Fenster in der Chrome-Konsole zurückgegeben wird, aber nicht.

kann ich auf, was ich suche mit

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

Gibt es eine Möglichkeit für mich zu setzen, was diese zu einer globalen Variable gibt ich in all meiner Spezifikationen verwenden kann?

Scheint nicht zu bekommen, was ich will, probieren Sie eine beforeEach oder setzen Sie den vorherigen Block auf eine Methode und setzen Sie eine Variable auf diese Methode.

Antwort

0

Ich denke, dass Sie auf jeden Fall wollen, Fenster zu verspotten, im Gegensatz zu versuchen, ein echtes DOM-Fenster-Objekt auf der Knoten-Seite Ihrer App (Mocha) zu übergeben.

dieses Muster Versuchen ich peitschte nur (Art entspricht der zu Mokka Tutorials habe ich gelesen und verwendet den this Kontext, wenn im Browser (Fenster) vs. laufen auf Knoten ändert (Exporte):

/** 
* 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); 

Dann könnte der Test in etwa so aussehen (meine sind auch in 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' 
Verwandte Themen