首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试在mocha-phantomjs中运行异步测试时出现脚本错误(:0

尝试在mocha-phantomjs中运行异步测试时出现脚本错误(:0
EN

Stack Overflow用户
提问于 2014-11-12 16:15:33
回答 1查看 2.3K关注 0票数 2

我正在尝试测试一段异步代码,但不幸的是,我得到了一个晦涩难懂的错误代码,而且我似乎找不出问题是什么。该测试在浏览器中运行良好,但在phantomjs中运行会导致:

代码语言:javascript
复制
Uncaught Script error. (:0)

这个测试被写成一个requirejs模块,并且依赖于另一个模块。就像我说的,这在浏览器中工作得很好,当不执行异步测试时,在phantomjs中也工作得很好。我使用的是phantomjs 1.9.12和mocha-phantomjs 3.4.1。

代码语言:javascript
复制
define([ "csl" ], function( csl ) 
{  
   describe( "CSL", function()
   {
      it( "isLoggedIn", function( testCompleted )
      {
          csl.isLoggedIn().then( function( partner )
          {
              chai.expect( partner ).to.be.a( "object" );
              testCompleted();
          } )
          .fail( function( error )
          {
               testCompleted( error );
          } );
      } );
  } );
} );
EN

回答 1

Stack Overflow用户

发布于 2015-05-03 11:49:34

这就是当异步函数中存在异常时,chai.expect会抛出AssertionError时mocha会产生的错误。

您可以在浏览器中通过简单的超时重现相同的错误:

代码语言:javascript
复制
    it("should fail async", function(done) {
        window.setTimeout(function() {
            "".should.not.equal("");
            done();
        })
    })

要修复它,您需要通过回调报告错误,而不是异常:

代码语言:javascript
复制
    it("should fail async with good error", function(done) {
        window.setTimeout(function() {
            if ("" == "") return done(new Error("Async error message"));
            done();
        })
    })

    it("should fail async with exception", function(done) {
        window.setTimeout(function() {
            try {
                "".should.not.equal("");
            }
            catch (e) {
                return done(e);
            }
            done();
        })
    })

问题不在于幻影本身(除了导致测试失败的原因之外),而是测试运行器和幻影之间的连接使得一切都是异步的,从而触发了mocha bug。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26882155

复制
相关文章

相似问题

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