首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如果js不能读取null的属性“应该”

如果js不能读取null的属性“应该”
EN

Stack Overflow用户
提问于 2013-08-07 03:25:45
回答 5查看 27.5K关注 0票数 33

我尝试在节点中使用测试工具mocha。考虑以下测试场景

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var requirejs = require('requirejs');

requirejs.config({
    //Pass the top-level main.js/index.js require
    //function to requirejs so that node modules
    //are loaded relative to the top-level JS file.
    nodeRequire: require
});


describe('Testing controller', function () {

    it('Should be pass', function (done) {
            (4).should.equal(4);
            done();
    });

    it('Should avoid name king', function (done) {
        requirejs(['../server/libs/validate_name'], function (validateName) {
            var err_test, accountExists_test, notAllow_test, available_test;
            validateName('anu', function (err, accountExists, notAllow, available) {
                accountExists.should.not.be.true;
                done();
            });

        });
    });

});  

作为测试结果,我得到了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ make test
./node_modules/.bin/mocha \
                --reporter list

  . Testing controller Should be pass: 0ms
  1) Testing controller Should avoid name anu

  1 passing (560 ms)
  1 failing

  1) Testing controller Should avoid name anu:
     Uncaught TypeError: Cannot read property 'should' of null
      at d:\townspeech\test\test.spec.js:23:30
      at d:\townspeech\server\libs\validate_name.js:31:20
      at d:\townspeech\test\test.spec.js:22:13
      at Object.context.execCb (d:\townspeech\node_modules\requirejs\bin\r.js:1869:33)
      at Object.Module.check (d:\townspeech\node_modules\requirejs\bin\r.js:1105:51)
      at Object.Module.enable (d:\townspeech\node_modules\requirejs\bin\r.js:1376:22)
      at Object.Module.init (d:\townspeech\node_modules\requirejs\bin\r.js:1013:26)
      at null._onTimeout (d:\townspeech\node_modules\requirejs\bin\r.js:1646:36)
      at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)



make: *** [test] Error 1

第一次通过没有任何复杂,但第二次,似乎,不能附加模块应该it。为什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-08-07 04:06:13

这是should库中已知的一个问题:在扩展object时,当然只有当您有一个具体的对象时,它才能工作。根据定义,null意味着您没有对象,因此不能调用它上的任何方法或访问它的任何属性。

因此,在这种情况下should是不可用的。

基本上,对于如何处理这个问题,您有两个选择:

  1. 你可以交换actualexpected。这样,只要您不期望null,您在开始时就有一个对象,因此可以访问它的should属性。但是,这并不好,因为它改变了语义,而且并不是在所有情况下都有效。
  2. 您可以通过另一个没有此问题的断言库来交换should库。

就我个人而言,我会选择选项2,而我个人最喜欢的选项是node-assertthat (它是由我编写的,因此它是我的最爱)。

无论如何,还有很多其他选项,比如expect。可以随意使用这些最适合您的测试风格的断言库。

票数 9
EN

Stack Overflow用户

发布于 2013-11-14 22:29:12

我也有同样的问题。我用以下方法解决了这个问题:

(err === null).should.be.true;

票数 78
EN

Stack Overflow用户

发布于 2014-03-12 10:23:31

你可以直接使用应该

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
should.not.exist(err);
票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18102152

复制
相关文章
JS,如果改变span标签的是否隐藏属性
----------------------------------Hongten--------------------------------------------
Hongten
2018/09/13
10.8K0
MySQL中IS NULL、IS NOT NULL、!=不能用索引?胡扯!
这种说法愈演愈烈,甚至被很多同学奉为真理。咱啥话也不说,举个例子。假如我们有个表s1,结构如下:
帅地
2019/10/30
4.5K0
MySQL中IS NULL、IS NOT NULL、!=不能用索引?胡扯!
switch的对象不能为null
虽然不多, 但几乎每次系统出问题的时候,看到api返回值是空的,绝大多数是NPE造成的。 这时候会感慨一下谁写的bug,然后去补判空代码。
Ryan-Miao
2019/07/18
1.7K0
MySQL中IS NULL、IS NOT NULL、!=不能用索引?胡扯!
这种说法愈演愈烈,甚至被很多同学奉为真理。咱啥话也不说,举个例子。假如我们有个表s1,结构如下:
JAVA葵花宝典
2019/07/19
2.4K0
MySQL中IS NULL、IS NOT NULL、!=不能用索引?胡扯!
MySQL中IS NULL、IS NOT NULL、!=不能用索引?胡扯!
这种说法愈演愈烈,甚至被很多同学奉为真理。咱啥话也不说,举个例子。假如我们有个表s1,结构如下:
Bug开发工程师
2019/07/22
2.1K0
MySQL中IS NULL、IS NOT NULL、!=不能用索引?胡扯!
你如果自学前端Js,能不能别看文档了?
我在网上讲课已经二年多,教过的学生没有一千也有800了,就业率是多少并没有统计过,不过七八成的比例总还是有的。这么久以来,我一直在思考一个问题,“前端零基础新人到底需要什么?怎么样的入门姿势才是最适合的?”
web前端教室
2018/07/30
8880
fastjson解析null值问题: 解决 null的属性不显示问题
null对应的key被过滤掉;这明显不是我们想要的结果,这时我们就需要用到fastjson的SerializerFeature序列化属性:
一个会写诗的程序员
2021/12/16
2.9K0
在js中运算不能随便把value属性定义成变量
在写一个小demo的时候,无意中发现定义变量的时候直接写入value,会导致获取不到数据,或者获取的不是我们想要的内容,在js中运算不能随便把value属性定义成变量
子舒
2022/06/09
1.9K0
JS中Null与Undefined的区别
Undefined类型只有一个值,即undefined。当声明的变量还未被初始化时,变量的默认值为undefined。 Null类型也只有一个值,即null。null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。 Screenshot (12).png js 代码 var oValue; alert(oValue == undefined); //output "true" 这段代码显示为true,代表oVlaue的值即为undefined,因为我们没有初始化它。 js 代码 a
前朝楚水
2018/04/02
3.6K0
JS中Null与Undefined的区别
如果正确读取SQL Server中的扩展事件?
微软官方或者一些SQL Server论坛提供了使用SQL XML解析扩展事件的脚本,如代码清单1所示。
全栈程序员站长
2022/07/11
3.3K0
JavaScript技术篇 - js的null值判断,js的undefined的判断,js的null与undefined的2种区分方法
undefined 和 null 用 == 比较是相等的,我们可以有两种方法来进行区分。
小蓝枣
2020/09/24
4.3K0
JavaScript技术篇 - js的null值判断,js的undefined的判断,js的null与undefined的2种区分方法
NULL不能和任何字段比较和运算
UPDATE dbo.PayPalPaymentInfo SET GrossAmount=TotalPrice+TaxAmount WHERE GrossAmount IS NULL --如果TaxAmount为NUll时,TotalPrice有值,会导致GrossAmount也为null --即NULL+任何数字都会是NULL --NULL不能和任何字段比较和运算 UPDATE dbo.PayPalPaymentInfo SET GrossAmount=TotalPrice+ISNULL(TaxAm
跟着阿笨一起玩NET
2018/09/18
7180
JS函数的属性
3.prototype:在创建自定义引用类型以及实现继承时,该属性的作用极为重要,该属性不可枚举,因此使用for-in 无法发现
大道七哥
2019/09/10
8K0
如果正确读取SQL Server中的扩展事件?
    SQL Server中使用扩展事件捕捉所需的信息后,可以选择存放的位置。比如说内存或文件中,但无论存在哪里,其本质都是一个大XML。因此在SQL Server中读取该XML就是解析扩展事件结果的方式。     微软官方或者一些SQL Server论坛提供了使用SQL XML解析扩展事件的脚本,如代码清单1所示。 1: WITH events_cte 2: AS ( SELECT DATEADD(mi, 3:
用户1217611
2018/01/30
1.4K0
logback.xml读取spring的属性
因为logback.xml和logback-test.xml会被logback组件直接读取,所以如果要交给spring管理,需要
十毛
2019/08/03
5.7K0
读取项目属性文件的几种方式
项目中会把一些环境变量、公共属性配置到属性文件中,总结了一些工程加载属性文件的方式。
用户2146693
2019/08/08
1.7K0
spring-PropertyPlaceholderConfiger读取属性
spring在读取配置文件的时候,我们时常使用@Value注解来注入配置文件中的配置,在配置文件中也可以通过${}的方式来引用已经申明的配置,这是依靠Spring提供的PropertyPlaceholderConfigure来实现的。
leobhao
2022/06/28
6210
python读取图片属性信息
从照片里面获取GPS信息。可交换图像文件常被简称为EXIF(Exchangeable image file format),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据,EXIF信息不支持png,webp等图片格式。
全栈程序员站长
2022/10/01
2.1K0
python读取图片属性信息
Linux C程序真的不能访问NULL指针吗?
本文将介绍如何对NULL指针地址建立合法映射,从而合法访问NULL指针。本文表达的宗旨:
Linux阅码场
2019/11/10
3.4K0
什么?你不知道 ConcurrentHashMap 的 kv 不能为 null?
最近设计某个类库时使用了 ConcurrentHashMap 最后遇到了 value 为 null 时报了空指针异常的坑。
明明如月学长
2023/03/11
5400
什么?你不知道 ConcurrentHashMap 的 kv 不能为 null?

相似问题

不能读取属性'on‘of null

22

不能从null读取属性“长度”

76

不能读取null的‘’属性

11

JS -无法读取null的属性'setAttribute‘

21

JS:无法读取属性‘样式’的null

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文