3

これは私が使用しているコードです

var sys, zombie,site;
zombie = require('zombie');
sys = require('sys');
site = "https://somesite.co.il"

describe("testing site: "+site, function() {

  it('responds 200 OK', function() {
    zombie.visit(site, function(err, browser) {
      expect(browser.statusCode).toEqual(200);

      //This method is a part of jasmine-node
      asyncSpecDone();
    });
  });

  it('title should be a specfiic title', function() {
    zombie.visit(site, function(err, browser) {
      expect(browser.text('title')).toEqual('טקסט בעברית');
      //console.log(browser.text('title'));

      asyncSpecDone();
    });
  });

  it("should fail logging with wrong password", function(err, browser){

    zombie.visit(site,{debug:true},function(err,browser){
        browser.
            fill("#email","us...@gmail.com").
            fill("#password", "aaa").
            pressButton(".loginbutton", function(){


                //console.log(browser.text("#errorarealogin"));
                expect(browser.text("#errorarealogin")).toContain("שגויים");


                //assert.equal(browser.text("title"),"טקסט בעברית")
                //asyncSpecDone();
                expect(browser.html("#errorarealogin")).toBeDefined();  
                });
        expect(browser.text("#errorarealogin")).toContain("שגויים");
        expect(browser.html("#errorarealogin")).toBeDefined();       
     asyncSpecDone();        
    //console.log("should fail logging with wrong password");
    //asyncSpecDone();
    })
  })

  it("should succeedin logging in",function(){
    zombie.visit(site,{debug:true},function(err,browser){
        browser.
            fill("#email","us...@gmail.com").
            fill("#password", "password").
            pressButton(".loginbutton", function(){


                //assert.equal(browser.text("title"),"טקסט בעברית")
                });
            expect(browser.success).toBeTruthy();
            asyncSpecDone();
        })
  })

  afterEach(function() {
    //So is this.
    asyncSpecWait();
  });
});

これは、jasmine-node から取得した結果です (デバッグ Web 情報なし):

testing site: https://somesites.co.il
  responds 200 OK
  title should be a specific title
  should fail logging with wrong password
  should succeedin logging in

Failures:

  1) should fail logging with wrong password
   Message:
     Expected '' to contain 'שגויים'.
   Stacktrace:
     Error: Expected '' to contain 'שגויים'.
    at new jasmine.ExpectationResult (D:\Users\Alonisser\AppData\Roaming\npm\node_modules\jasmine-node\lib\jasmine-node/
jasmine-2.0.0.rc1.js:102:32)
    at null.toContain (D:\Users\Alonisser\AppData\Roaming\npm\node_modules\jasmine-node\lib\jasmine-node/jasmine-2.0.0.r
c1.js:1171:29)
    at zombie.visit.debug (D:\Users\Alonisser\workspace\zombie\zombieSpec.js:47:49)
    at Browser.visit (D:\Users\Alonisser\node_modules\zombie\lib\zombie\browser.js:339:16)
    at Browser.wait (D:\Users\Alonisser\node_modules\zombie\lib\zombie\browser.js:192:16)
    at EventLoop.wait.done (D:\Users\Alonisser\node_modules\zombie\lib\zombie\eventloop.js:202:18)
    at process.startup.processNextTick.process._tickCallback (node.js:244:9)

  2) should fail logging with wrong password
   Message:
     timeout: timed out after 5000 msec waiting for spec to complete
   Stacktrace:
     undefined

Finished in 18.1 seconds

私は何を間違っていますか?div id が正しいことを確認し、特定のテキストが含まれていることを確認しましたが、期待するもの全体をコメントアウトしても失敗し、これを自分で理解することはできません。助けてくれてありがとう

更新: browser.log (console.log など) でコードを散らかしているので、これが非同期の問題であることはわかっていpressButtonます。browser.wait()しかし、それを解決する方法がわかりません。関数を内部に追加しようとしましpressButton()たが、それも役に立ちませんでした。また、このようにwaitFor関数属性を設定しようとしましwaitFor=15000たが、それも役に立ちませんでした。

多分私はモカに切り替える必要があります、多分それは私にとってより良いでしょう

別の更新:mochaは役に立ちませんでした。ここまたはGoogleグループでヘルプが不足しているため、casper.js(phantomjsに基づく)に移動したため、(少なくとも私にとっては)はるかにうまく機能します。私以外の誰かを責めているわけではありませんが、ここでは強力なコミュニティの欠如が私に不利に働いていました. この質問は閉じていると思います。また、純粋な好奇心のために、正しい答えが生じた場合はそれに報います

4

0 に答える 0