E2E测试失败
问题描述:
我想在Angular 2中设置一个示例应用程序,现在我试图测试e2e测试部分。我对Jasmine框架或Angular 2使用的量角器库知之甚少。E2E测试失败
所以我不知道为什么我我当我运行ng e2e
(我用角CLI)
的错误,我得到了以下错误:
[09:41:10] I/direct - Using ChromeDriver directly...
[09:41:10] I/launcher - Running 1 instances of WebDriver
[09:41:12] E/launcher - Error: TSError: ? Unable to compile TypeScript
e2e\app.e2e-spec.ts (16,4): Cannot find name 'browser'. (2304)
e2e\app.e2e-spec.ts (17,19): Cannot find name 'element'. (2304)
e2e\app.e2e-spec.ts (17,27): Cannot find name 'by'. (2304)
e2e\app.e2e-spec.ts (18,5): Supplied parameters do not match any signature of ca
ll target. (2346)
我的测试案例(app.e2e- spec.ts)
import { WebPage } from './app.po';
describe('web App', function() {
let page: WebPage;
beforeEach(() => {
page = new WebPage();
});
it('should display message saying app works',() => {
page.navigateTo();
expect(page.getParagraphText()).toEqual('Hello World');
});
it('Has a greeting', function() {
browser.get('/index.html');
var greeting = element(by.id('h2Id'));
expect().getText(greeting).toEqual('Hello, World!');
});
});
Protrator.config.js
// Protractor configuration file, see link for more information
// https://github.com/angular/protractor/blob/master/docs/referenceConf.js
/*global jasmine */
var SpecReporter = require('jasmine-spec-reporter');
exports.config = {
allScriptsTimeout: 11000,
specs: [
'./e2e/**/*.e2e-spec.ts'
],
capabilities: {
'browserName': 'chrome'
},
directConnect: true,
baseUrl: 'http://localhost:4200/',
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
print: function() {}
},
useAllAngular2AppRoots: true,
beforeLaunch: function() {
require('ts-node').register({
project: 'e2e'
});
},
onPrepare: function() {
jasmine.getEnv().addReporter(new SpecReporter());
}
};
答
app.e2e-spec.ts:
expect()。getText(greeting).toEqual('Hello,World!');
=> expect(greeting.getText()).toEqual('Hello, World!');
+0
请解释你的答案! – Mazz
+0
欢迎来到*。请参阅这里[如何格式化代码](https://*.com/editing-help) –
'进口{浏览器,元素,通过}的 '量角器';'请注意,通常你会在*页面对象*有这些(见['app.po.ts'(HTTPS:/ /github.com/textbook/known-for-web/blob/master/e2e/pages/app.po.ts)),它从测试中抽象出实际与DOM进行交互的业务,并暴露更加用户友好的API使您的测试更具可读性(例如['app.e2e-spec.ts'](https://github.com/textbook/known-for-web/blob/master/e2e/app.e2e-spec.ts)) - 你的例子中'page.getGreetingText()'和'element(by.id('h2Id'))。getText()'之间的区别。 CLI就是这样做的。 – jonrsharpe
我明白了,它似乎工作正常,我假设CLI隐式地导入了库,感谢您的回复 – Snedden27
CLI在自动生成的'.po'文件中包含那些导入,您需要在其中与浏览器和特定元素,而不是在'.e2e-spec'文件中。 – jonrsharpe