1

私は奇妙な問題に遭遇しました、そしてそれがなぜそれをしているのか理解できません。

フレームワークとしてexpress-coffeescriptを使用し、テスト用にmochaを使用し、ブラウザーテスト用にshould、chai、およびzombiejsを使用しています。

 request = require 'request'
 Browser = require 'zombie'
 assert  = require 'assert'
 chai    = require 'chai'  
 should  = require 'should'
 expect  = chai.expect
 chai.should

 browser = new Browser()

 describe 'GET /login', ->

    it 'should login a user successfully', (done) ->
        browser.on "error", -> 
             console.log "Error"

        browser.visit "http://localhost/test-laravel/public/login",  (browser),  ->

             browser.fill "username", "TheHydroImpulse"
             browser.fill "password", "SomePassword123"
             browser.pressButton "login", ->
                  console.log browser.location.pathname
                  should.equal "randomTextHere", "/test-laravel/public/dashboard"

このコードは完全に正常に機能します。もちろん、実行時にテストは失敗します。

mocha test --compilers coffee:coffee-script -R spec

これや問題の奇妙なことは、私がテストに合格したときです。

should.equal "/test-laravel/public/dashboard", "/test-laravel/public/dashboard"

テストは合格するはずですが、代わりに、2000ミリ秒のタイムアウトのために失敗するよりも数秒間ハングします。私は周りを検索しようとしましたが、この問題を文書化するものは何もないようです、または多分それは私自身のせいです。私は数時間前にコーヒースクリプトを学び始めたところです。

4

1 に答える 1

3

行の後:

should.equal "/test-laravel/public/dashboard", "/test-laravel/public/dashboard"

メソッドを呼び出します。

done()

これを行うと、テストが終了したことがモカに通知されます。これは、Node.jsプラットフォームで記述されたほとんどのコードの非同期性のために発生する必要があります。

于 2012-07-20T15:06:09.420 に答える