首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态使用Chai expect

动态使用Chai expect
EN

Stack Overflow用户
提问于 2016-06-04 06:01:07
回答 1查看 562关注 0票数 1

我正在尝试动态生成mocha测试,但是我遇到了一些问题:

代码语言:javascript
复制
expect([1, 2, 3])['to']['deep']['equal']([1, 2, 3]);

然而,工作正常。

代码语言:javascript
复制
var e = expect([1, 2, 3]);
e = e['to'];
e = e['deep'];
e = e['equal'];
e([1, 2, 3]);`

产生

Uncaught TypeError: this.assert is not a function at assertEqual (node_modules/chai/lib/chai/core/assertions.js:487:12) at ctx.(anonymous function) (node_modules/chai/lib/chai/utils/addMethod.js:41:25)

e([1, 2, 3]);上。你知道这里出了什么问题吗?或者我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2016-06-04 06:09:24

默认情况下,不绑定JavaScript方法。

代码语言:javascript
复制
var a = {whoAmI: 'a', method: function() {console.log(this);}}
var b = {whoAmI: 'b'};

console.log(a.method()); // will print a

var method = a.method;
method(); // will print the global object (Window)

b.method = method;
b.method(); // will print b

如果你需要绑定,你可以使用闭包:

代码语言:javascript
复制
// simple case
var method = function() {return a.method();}
// slightly more complex case, supporting arguments
var method = function() {return a.method.apply(a, arguments);}

method(); // will print a
b.method = method;
b.method(); // will still print a

或者,您可以使用内置的.bind()方法。

代码语言:javascript
复制
var method = a.method.bind(a);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37624081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档