在mocha.js中使用Empty函数
Using Empty function in mocha.js
我是Javascript、node.js和mocha的新手。在查找基本示例时,我遇到了一个空函数"function()"。使用空函数的目的是什么。
var assert = require('assert'),
var test = require('selenium-webdriver/testing'),
var webdriver = require('selenium-webdriver');
test.describe('Google Search', function() {
test.it('should work', function() {
var driver = new webdriver.Builder().
withCapabilities(webdriver.Capabilities.chrome()).
build();
driver.get('http://www.google.com');
var searchBox = driver.findElement(webdriver.By.name('q'));
searchBox.sendKeys('simple programmer');
searchBox.getAttribute('value').then(function(value) {
assert.equal(value, 'simple programmer');
});
driver.quit();
done();
});
});
当我运行这个示例代码时,我得到了以下错误,你能帮我解决这个问题吗。
错误:错误:超过了2000ms的超时时间。请确保在该测试中调用了done()回调。
正如我所看到的,我可以启动浏览器并打开程序中写入的google.com,但我仍然看到失败
谷歌搜索1) 应该工作
0通过(2s)1个故障
1) 谷歌搜索应该起作用:错误:超过了2000ms的超时时间。请确保在该测试中调用了done()回调。为null。(C:''Users''kashyap''AppData''Roaming''npm''node_modules''mocha''lib''runnable.js:170:19)在Timer.listOnTimeout(times.js:11:15)
你能不能也给我推荐一些链接来了解并尝试带有硒的mocha+nodejs
您的函数不为空。事实上,在javascript中,有两种方法可以定义函数:
function myFunction (arg1, arg2){
//Do some stuff
}
或
var myFunction = function(arg1, arg2){
//Do some stuff
}
在这两种情况下,函数都存储在名为"my function"的变量中(不过作用域不同)。
所以基本上,在javascript中,函数就是一个值。您可以将c中的函数指针进行比较,以了解它的工作方式。
现在,摩卡所做的是将测试过程作为函数描述的参数,将测试本身作为函数的参数(您也可以使用before/afer函数设置初始化/清洁过程)。
我们现在可以看到"done"函数是什么。done函数(你可以给它起你想要的名字,done只是最常见的名字)是你应该在测试结束时调用的函数。它是作为定义您所处流程的函数的参数给出的。快速示例:
it('should work', function(done){
//do some testing
done();
});
做与相同的事情
it('should work', function(){
//do some testing
});
但是,当您测试异步函数时,该参数是有用的。例如,我想在数据库中测试一个查询,它不是即时的。
it("should work", function(){
dbDriver.get('key1', function(data){
assert(data == goodValue);
});
});
上一个例子将无法正常工作,因为db请求不是即时的,并且是异步调用,这意味着我的测试将继续运行,我的断言将在我们离开测试部分后发生。所以摩卡会认为一切都好,然后会忽略我的断言。
为了允许异步函数测试,mocha设计了done参数,这使得测试在不调用参数函数的情况下继续运行,所以,如果我想让我的测试正确运行,我必须这样做:
it("should work", function(done){
dbDriver.get('key1', function(data){
assert(data == goodValue);
done();
});
});
现在,mocha将被困在这个测试中,而done函数没有被调用。而且,一旦调用get函数的回调并进行断言,就会调用它。
现在,让我们来看一下代码。首先,你的呼吁是不必要的。Done没有作为任何回调的参数给出,所以它应该是未定义的,如果执行了那一行,你只会得到一个语法错误。
现在,基本上,代码中发生的事情是函数响应不够快,所以mocha认为测试已经超时(默认值为2000毫秒)。
基本上,你应该开始测试在你的过程中一个接一个地添加函数,以检查哪一个超时了,然后才能将你的问题减少到只超时的函数。
如果你想学习摩卡,该框架的官方网站非常好:http://mochajs.org/,并提供了一些良好的实践(如在之前和之后使用)。
我希望我不会太久,我可以帮助你更好地理解mocha和javascript。
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 如何在JavaScript中将字符串转换为函数引用
- 用嵌套函数和默认函数定义函数
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- JQuery合并了keyup和focusout两个函数
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- Javascript:为什么是构造函数's __proto__属性Empty(){}
- 其中是函数Empty(){}
- 在mocha.js中使用Empty函数
- JavaScript-所有DOM操作函数都返回null/empty
- 如何在不使用 Empty() 函数的情况下使用 jQuery 消除旧内容
- 从prototye迁移到Jquery Rails,empty()函数不起作用
- 未捕获的typeerror undefined不是.empty()上的函数
- 需要像jquery empty()这样的函数来删除jquery添加的元素
- 即使在使用empty()清除DOM之后,jquery函数也会执行两次
- JavaScript 中的 Empty 函数是什么,为什么它没有定义