Eln*_*mov 5 angularjs protractor
我正在开发REST API的前端.我正在使用Protractor进行端到端测试,并且模拟了API,因为我希望能够单独测试前端.
这是我得到的一个简单的测试:
describe('partner', function () {
it('should list partners', function () {
var page = new PartnerListPage();
var httpBackendMock = function () {
angular.module('httpBackendMock', ['ngMockE2E'])
.run(function ($httpBackend) {
$httpBackend.whenGET('/api/partners').respond(200, {
_embedded: {
partners: [
{
firstName: 'Elnur',
lastName: 'Abdurrakhimov'
}
]
}
});
$httpBackend.whenGET(/.*/).passThrough();
});
};
browser.addMockModule('httpBackendMock', httpBackendMock);
page.open();
expect(page.isOpen()).toBeTruthy();
expect(page.getPartner(0).firstName).toBe('Elnur');
expect(page.getPartner(0).lastName).toBe('Abdurrakhimov');
});
});
Run Code Online (Sandbox Code Playgroud)
它的作用基本上是创建后端的模拟,以便它返回我想要的东西.
除了一件事,这一切都很好,花花公子.我希望能够在测试结束时调用以下方法:
$httpBackend.verifyNoOutstandingExpectation();
$httpBackend.verifyNoOutstandingRequest();
Run Code Online (Sandbox Code Playgroud)
我想这样做的原因是验证模拟是否获得预期的请求.对我提供的测试没有多大意义,但是我想说我想验证当我提交某个表单时,POST正在执行特定数据的特定请求.我想对后端模拟本身进行验证,以便我的测试与输出该POST请求的响应结果隔离,因为它将在另一个测试中进行测试.
如何访问我添加到的同一个$httpBackend实例?httpBackendMockbrowser
据我所知,Protractor和应用程序本身在不同的进程中运行.因此,我无法$httpBackend直接以单元测试的方式访问.