2016-12-29 12 views
1

私は最近、私は私のテストを実行したときに、私のitブロックは取得しない、 http://engineering.wingify.com/posts/angularapp-e2e-testing-with-protractor/分度器は

しかし、このポスト下記の分度器でページオブジェクトモデルを使用することを試みた「それはブロックを実行せずに私のテストに合格します実行される。以下は

私のログインページオブジェクトの下

/*File Name : loginPage.js*/ 
 
var loginPage = function() { 
 
    'use strict'; 
 
    this.email = element(by.id('Email')); 
 
    this.next = element(by.id('next')); 
 
    this.pwd = element(by.id('Passwd')); 
 
    this.signin = element(by.id('signIn')); 
 
    this.submitButton = element(by.css('.login-form button[type="submit"]')); 
 
    //this.classitem = element(by.css('hap-class-item')); 
 
    //this.googlesigninbtn = element(by.css('[ng-click="login_google()"]')); 
 

 
    //******************** functions ******************* 
 

 
    this.enterEmail = function (email) { 
 
     browser.ignoreSynchronization = true; 
 
     //browser.sleep(2000); 
 
     this.email.clear(); 
 
     this.email.sendKeys(email); 
 
     this.next.click(); 
 
     browser.sleep(2000); 
 
    }; 
 

 
    this.enterPassword = function (pwd) { 
 
     browser.ignoreSynchronization = true; 
 
     this.pwd.clear(); 
 
     browser.sleep(2000); 
 
     this.pwd.sendKeys(pwd); 
 
     this.signin.click(); 
 
     browser.sleep(2000); 
 
    }; 
 
}; 
 
module.exports = { 
 
    log: new loginPage() 
 
};

は私ログアウトページオブジェクトの下

/*File Name : logoutPage.js*/ 
 
var logoutPage = function() { 
 
    'use strict'; 
 
\t \t this.logoutcaret = element(by.css('[ng-if="api.userNav.items"]')); 
 
    \t this.logoutbtn = element(by.css('[ng-click="openModal()"]')); 
 
    \t this.googlelogout = element(by.css('[ng-click="logout()"]')); 
 
     var EC1 = protractor.ExpectedConditions; 
 
    //******************** functions ******************* 
 
    this.logoutfn = function() { 
 
    \t browser.wait(EC1.visibilityOf(this.logoutcaret),15000); 
 
\t  this.logoutcaret.click(); 
 
    \t this.logoutbtn.click(); 
 
    \t this.googlelogout.click(); 
 
    }; 
 
}; 
 
module.exports = { 
 
    log: new logoutPage() 
 
};

がために作成したログインとログアウト機能を持っている私の基本ページであるです各試験に使用される。

/*File Name : LoginOut.js*/ 
 
//var switchwin = require('../commons/selectwindow.js'); 
 
var loginPage = require('../objects/loginpage.js'), 
 
    eml = 'abc', 
 
    password = 'pwd'; 
 

 
exports.login = function() { 
 
    //browser.driver.manage().deleteAllCookies(); 
 
    browser.driver.get('https://accounts.google.com/ServiceLogin'); 
 
    loginPage.log.enterEmail(eml); 
 
    loginPage.log.enterPassword(password); 
 
    browser.driver.get('URL'); 
 
}; 
 

 
var logoutPage = require('../objects/logoutpage.js'); 
 
exports.logout = function() { 
 
    logoutPage.log.logoutfn(); 
 
};

最後に、私のテストは常に通りますが、単にログインしてログアウトするだけですが、 'it'ブロックでは何も実行されません。

/*File Name : tests*/ 
 
'use strict'; 
 

 
describe('I want to test Smartshare', function() { 
 

 
    var loginMod = require('../commons/loginout.js'); 
 
    //login before each test 
 
    beforeEach(function() { 
 
     loginMod.login(); 
 
    }); 
 
    var loginMod = require('../commons/loginout.js'); 
 
    //logout after each test 
 
    afterEach(function() { 
 
     loginMod.logout(); 
 
    }); 
 

 
    var smartshareMod = require('../objects/smartsharepage.js'); 
 
    //copy doc test 
 
    it('should test sharing a document', function() { 
 
    \t exports.copydoc = function() { 
 
    \t \t smartshareMod.log.copyDoc().then(function(){ 
 
    \t \t \t console.log('document copied'); 
 
    \t \t }); 
 
    \t }; 
 
    }); 
 
});
私は同様の質問を読みましたが、あなたは it()ブロック内の任意の関数を呼び出すことはありませんので、ヘルプなし Protractor passes tests without running the testshttps://github.com/angular/angular-cli/issues/2072

node.js version - v6.4.0 
    protractor version - 4.0.11 
    Running on MacOS Sierra 
    webdriver-manager updated to latest 

答えて

1

でこれは、それを修正:

it('should test sharing a document', function() { 
    smartshareMod.log.copyDoc().then(function() { 
     console.log('document copied'); 
    }); 
}); 

また、その@alecxe

'use strict'; 

var loginMod = require('../commons/loginout.js'); 
var smartshareMod = require('../objects/smartsharepage.js'); 

describe('I want to test Smartshare', function() { 
    beforeEach(function() { 
     loginMod.login(); 
    }); 

    afterEach(function() { 
     loginMod.logout(); 
    }); 

    it('should test sharing a document', function() { 
     smartshareMod.log.copyDoc().then(function() { 
      console.log('document copied'); 
     }); 
    }); 
}); 
+0

おかげでトリックをした:一度、再利用、テスト仕様の一番上にそれらを必要とする - トンあなたのページは、あなたがそれらを使用するたびに、オブジェクトの「必要」しなければなりません。 –