gpt4 book ai didi

coffeescript - 在 Mocha 中定义测试窗口

转载 作者:行者123 更新时间:2023-12-01 06:41:18 26 4
gpt4 key购买 nike

我正在尝试将一些测试集成到我当前的 Backbone/CoffeeScript 应用程序中。
我已经为我的应用程序创建了一个模块,烘焙到 window 对象中,但是运行任何 mocha 测试都会失败,因为 window 是未定义的。

 module = (name) ->
window[name] = window[name] or {}
module 'Cart'
关于如何为 Mocha 定义窗口的任何方向?
我确实尝试过使用 jsdom 并以这种方式创建一个窗口,但它仍然抛出了同样的错误。提前致谢。
编辑:
使用zombie.js 让我比使用jsdom 更进一步。
zombie = require 'zombie'
browser = new zombie.Browser
browser.window.location = 'http://local.cart'
我试图找出一种访问 DOMWindow 并将变量设置为其值之一的方法。
如果 browser.window 与在 Chrome 控制台中访问窗口返回的对象相同,那将是理想的,但事实并非如此。
我可以访问我正在寻找的东西
zombie.visit 'http://local.cart', (err, browser) ->
throw err if err
browser.window.Cart
有没有办法让我将返回的内容设置为我可以在所有规范中使用的全局变量?
似乎无法得到我想要的尝试 beforeEach 或将前一个 block 设置为方法并将变量设置为该方法。

最佳答案

我认为你肯定想要模拟窗口,而不是试图在你的应用程序的节点端传递一个真实的 DOM 窗口对象(mocha)。

试试我刚刚创建的这个模式(有点符合我读过的 mocha 教程并使用 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'

关于coffeescript - 在 Mocha 中定义测试窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10091025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com