Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何保持量角器运行?_Javascript_Sql Server_Protractor - Fatal编程技术网

Javascript 如何保持量角器运行?

Javascript 如何保持量角器运行?,javascript,sql-server,protractor,Javascript,Sql Server,Protractor,我正在尝试使用sql server驱动程序为NodeJs访问量角器测试中的Db(量角器是NodeJs应用程序,所以这没有问题) 我们的想法是在e2e测试中检查Db数据: 我们可以检查数据库中是否正确写入了一些在UI上看不到的隐藏内容(e.x日志,…) 我们可以在e2e测试中隔离特性:我们不依赖另一个特性来显示数据,以检查写入数据的特性是否正常工作 我遇到的问题是,只要量角器完成与浏览器的交互,它就会终止。因此,我访问数据库的代码无法验证检索到的数据(e.xexpect(dataFromDb)

我正在尝试使用sql server驱动程序为NodeJs访问量角器测试中的Db(量角器是NodeJs应用程序,所以这没有问题)

我们的想法是在e2e测试中检查Db数据:

  • 我们可以检查数据库中是否正确写入了一些在UI上看不到的隐藏内容(e.x日志,…)
  • 我们可以在e2e测试中隔离特性:我们不依赖另一个特性来显示数据,以检查写入数据的特性是否正常工作
我遇到的问题是,只要量角器完成与浏览器的交互,它就会终止。因此,我访问数据库的代码无法验证检索到的数据(e.x
expect(dataFromDb).toEqual('foo'))
,因为对数据库的请求在NodeJs中是异步的

当我通过回调检索数据时,量角器已经终止

在我看来,量角器只知道web浏览器承诺,并在没有未完成的浏览器承诺时终止


有没有办法让量角器保持活动状态,以便我可以验证我的数据库数据?谢谢。

有两件事要记住

1)
expect(dataFromDb.toEqual('foo'))
:量角器包装
expect
以理解承诺。但是,它只理解
webdriver.promise
(即没有$q或任何其他承诺)。如果您想针对非webdriver承诺做出断言,您必须自己解决该承诺,如:

dataFromDb.then(function(resolvedData) {
  expect(resolvedData).toEqual('foo')
})
2) 量角器不“终止”。量角器仅帮助您使用另一个测试框架(即jasmine、mocha)启动测试;一旦这样做了,您就只需要在测试框架上运行一个工具库(即定位器、waitForAngular等)。这是您必须防止终止的另一个框架。我不知道您使用的是什么框架,但我将以jasmine为例:

it('call db', function(done) { //notice the inclusion of `done`
  browser.get('something'); //this is protractor 
  element(by.xyz).click(); //this is protractor

  var data = queryDatabase(); // you must tell jasmine to wait for this.
  data.then(function(resolvedData) {
    expect(resolvedData).toBe('foo');
    done(); // tell jasmine you're done. 
  })
})

旁注,为了方便用户,量角器将jasmine
it
修补为等待webdriver命令完成(就像修补
expect
一样)。然而,如果您不使用webdriver的承诺,您需要告诉它何时通过
done
回调完成测试。

@alecxe:量角器应该被视为现实世界中的真正测试者。在现实世界中,测试人员会打开浏览器,对其进行测试,然后转到数据库检查数据。因此,量角器的设计应考虑到这一点。