【发布时间】:2015-12-10 17:01:43
【问题描述】:
模拟文件.js
exports.httpBackendMock = function(){
angular.module('httpBackendMock', ['myApp', 'ngMockE2E'])
.run(function($httpBackend){
mockPeopleData = {
"id": 1,
"name": "Jennifer",
"gender": "Female"
};
$httpBackend.whenGET(/\api\/1\/people/).respond(mockPeopleData);
});
}
我正在从我们应用程序的实时页面中获取mockPeopleData。
实现步骤: 刷新页面 > 检查元素 > 网络选项卡 > XHR 选项卡 > 单击左侧“名称”部分的端点 > 然后单击“响应”
我正在复制该对象并将其用作量角器测试中的“要模拟的东西”。
规范文件.js
var mockModule = require('./Mock-file.js');
describe('testing our mock module', function(){
beforeEach(function(){
browser.addMockModule('httpBackendMock', mockModule.httpBackendMock);
});
it('should find html content', function(){
expect(browser.isElementPresent(element(by.binding('person.name')))).to
});
});
上面我们正在添加我们的模块,并期望量角器从我们的 mockPeopleData 中找到页面上包含“Jennifer”的元素。
index.html
<span>{{person.name}}</span>
理想情况下,量角器将模拟我们的元素,然后在我们的测试中识别它。相反,我得到了“未找到元素” - 我在测试期间通过截屏确认该元素不存在。
browser.wait(function() {
browser.takeScreenshot().then(function(png) {
var stream = fs.createWriteStream("/tmp/screenshot.png");
stream.write(new Buffer(png, 'base64'));
stream.end();
});
}, 5000);
【问题讨论】:
-
你确定在
browser.get()之前调用browser.addMockModule()吗?谢谢。 -
@alecxe 是的,我在
expect声明之前立即致电browser.driver.get('http://localhost:8000');
标签: javascript angularjs mocking protractor angularjs-e2e