gpt4 book ai didi

javascript - 如何在YUI3中使用Assert.isUndefine()和Assert.isNotUndefine()?

转载 作者:行者123 更新时间:2023-12-02 20:27:24 25 4
gpt4 key购买 nike

我正在尝试使用 YUI3 测试框架测试是否存在已声明、已定义的函数。在 Safari 和 FireFox 中,尝试使用 isNotUndefined、isUndefined 或 isFunction 失败。我希望它们抛出一个可以由测试框架处理的异常。

 Y
Object
Y.Assert
Object
Y.Assert.isNotUndefined(x, "fail message")
ReferenceError: Can't find variable: x
Y.Assert.isUndefined(x, "fail message")
ReferenceError: Can't find variable: x
Y.Assert.isFunction(x, "fail message")
ReferenceError: Can't find variable: x

但是,相反,我从来没有看到失败消息,并且其余的测试也不会运行,因为解释器妨碍了......这是否破坏了这些函数的目的,或者是我误解了框架?

我的直觉告诉我,鉴于上面的代码并且只有上面的代码,

  Y.Assert.isUndefined(x, "fail message")

应该继续,不会出现错误(因为 x 未声明)并且

  Y.Assert.isNotUndefined(x, "fail message")

应该记录消息“失败消息”(因为 x 未声明)。

但是,由于 ReferenceError,无法(使用那些 YUI3 方法)测试未声明的对象。相反,我留下了一些非常丑陋的断言代码。我无法使用

 Y.Assert.isNotUndefined(x)
ReferenceError: Can't find variable: x

 Y.assert( x !== undefined )
ReferenceError: Can't find variable: x

这给我留下了

 Y.assert( typeof(x) !== "undefined" ) // the only working option I've found
Assert Error: Assertion failed.

它的可读性比

低得多
 Y.Assert.isNotUndefined(x)

我再次问:这是否破坏了这些函数的目的,或者我误解了框架?

所以

 x

未声明,因此无法直接测试,而

 var x;

声明了它,但未定义它。最后

 var x = function() {};

既被声明又被定义。

我认为我缺少的是轻松表达的能力

 Y.Assert.isNotUndeclared(x);

-威尔

最佳答案

好的,昨天有点晚了,我现在明白你的问题了,你想做的是检查变量是否被定义,对吧?

执行此操作的唯一方法是typeof x === 'undefined'

typeof 运算符允许使用不存在的变量。

因此,为了使其工作,您需要上述表达式并将其插入到正常的 true/false 断言中。

例如(没有使用过 YUI3):

Y.Assert.isTrue(typeof x === 'undefined', "fail message"); // isUndefined
Y.Assert.isFalse(typeof x === 'undefined', "fail message"); // isNotUndefined

关于javascript - 如何在YUI3中使用Assert.isUndefine()和Assert.isNotUndefine()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4637458/

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