2017-08-24 10 views
0

私は次の関数を考えてみてください関数はassertaionコンソールログから値を取得して、分度器テストでその値をアサートするにはどうすればよいですか?

のために使用される値を返したい:私はいくつかがあると思い

it('Provider VAT number validation with invalid VAT number',function() { 
     ProviderVatNumber.sendKeys('IMEZ'); 
     element(by.tagName("body")).click(); 
     body.click(); 
     browser.sleep(3000); 
     ccc = giveWrittenValue(ProviderVatNumber); 
     expect(ccc).toBe('Invalid VAT number'); 
}); 

function giveWrittenValue(x) { 
     var msg; 
     x.getAttribute('value').then(function (value) { 
      if (value) { 
       console.log(value); 
       var errorMsg = $('.invalid.error-msg'); 
       errorMsg.isPresent().then(function (Present) { 
        if (Present) { 
         msg = errorMsg.getText(); 
        } 
        else { 
         msg = 'Valid'; 
        } 
       }); 
      } 
      else { 
       msg = 'No input is provided'; 
      } 
      return msg; 
     }); 
    } 

と私のコードはここにありますこの点については誰でも助けてください。

+0

をあなたがにconsole.log値を使用する場所..あなたが正確に何をしたい説明してくださいできますか? – Nikita

+0

私のコードから生成された特定のコンソールログを取得したい。生成されたコンソールログに基づいて、テストが合格したかどうかを確認したい@ Nikita –

+0

作業中の機能をテストするにはより良い方法を見つけることを提案します。これは、本番アプリケーションをテストする現実的なシナリオではありません。何かがあれば、その値をコンソールに書き込むのではなく、単にHTML要素に注入してそこに存在することを確認してください。 – Gunderson

答えて

0

あなたは、コンソールログを取得し、その後、それらの上にアサートを実行するには、次を使用することができます。

browser.manage().logs().get('browser').then(function(browserLog) { 
    // Replace the following with an Assert statement 
    console.log('log: ' + require('util').inspect(browserLog)); 
    // expect(browserLog.length).toEqual(0); 
}); 

https://github.com/angular/protractor/blob/master/docs/faq.md#how-can-i-get-hold-of-the-browsers-console

Check there were no errors in the browser console with Protractor

+0

私のポストをコードで更新しました。あなたはこれを助けることができますか? @ジョンStennett –

0

方法は以下の通りです:

browser.manage().logs().get('browser').then(function(consoleLogs) { 
    // consoleLogs is an array of objects with level and message fields 
    // for example in the level property you can also check if it's an error through level.value > 900 
}); 

しかし、問題は:なぜwoulあなたはそれをしますか?実際にはコンソールに表示されているもの(特にe2eテスト)をテストするのは本当に珍しい習慣です。 e2eテストではこのようなことはテストしないでください。

p.s.そのクロムが直接あなたのログをテストするために使用することができassert方法提供も覚えておいてください:

console.assert(1 > 2, {"message":"1 it's not greater than 2"}); 
+0

こんにちは、私はちょうどコードで私のポストを更新しました。あなたはこれを助けることができますか? @quirummo –

+0

まず、giveWrittenValue関数内の値を返す必要があります。その後、あなたはそれを使用する必要があると呼びます。すべての分度器メソッドは非同期であるため、約束を返します。ちょうどfyi、私はあなたのコードを変更し、すべての質問を更新した点を得ました。しかし、SOでこれを行う正しい方法は、古い質問テキストを残して、最後に新しいコードを編集して追加することです。あなたが質問を完全に変更した場合、最初の質問で得られたすべての回答は、将来のあるユーザーが質問を見ると狂っているようです – quirimmo

関連する問題