我想要测试用户界面的一个特定元素。要做到这一点,我需要特别请求我的后端来回应预定义的数据,但所有其他请求应该通过。下面是我如何做到这一点(咖啡更多可读性):当我模拟后端查看不加载
describe 'select2 combobox widget',()->
httpBackendMock =() ->
angular.module 'httpBackendMock', ['ngMockE2E', 'fmAppApp']
.run ($httpBackend)->
dummyCategories = [
{id: 1, name: 'foo', icon: '', user_id: 5},
{id: 2, name: 'bar', icon: '', user_id: 5},
{id: 3, name: 'baz', icon: '', user_id: 5},
{id: 4, name: 'quax', icon: '', user_id: 5}
]
$httpBackend.whenGET '/api/categories'
.respond()->
[200, dummyCategories]
$httpBackend.whenGET /.*/
.passThrough()
$httpBackend.whenGET /^\/views\//
.passThrough()
$httpBackend.whenGET /^\/scripts\/.*/
.passThrough()
$httpBackend.whenGET /^\/scripts\//
.passThrough()
$httpBackend.whenGET /^\/bower_components\//
.passThrough()
$httpBackend.whenGET(/\.html$/).passThrough()
browser
.addMockModule 'httpBackendMock', httpBackendMock
所以基本上我在这里做的是我的应用模块fmAppApp
和角度ngMockE2E
顶部创建新的模块,并告诉量角器它。
并为完整起见,我会在这里展示一个简单的声明本describe
块中:
it 'should allow user to type in anything',()->
browser.get 'http://localhost:9000/#/'
element By.model 'category.selected'
.click()
input = element By.css '.ui-select-search'
input.sendKeys 'newtestcategory'
expect input.getAttribute('value')
.toBe 'newtestcategory'
当我运行咕噜量角器它会打开浏览器,导航到指定的URL(http://localhost:9000/#/
),因为它应该和然后我看到这个错误的空白页和规格失败: NoSuchElementError: No element found using locator: by.model("category.selected")
不幸的是,这个消息是我所有,因为我无法打开萤火虫,并看到明显的原因出了什么问题。我想我可以以某种方式从浏览器控制台重定向日志记录,看看什么是邪恶根源,但我不知道如何。也许有人遇到过,并知道它可能是什么? 更新: 我一样Cétia以下建议和我在日志中这样的信息:
message: 'http://localhost:9000/bower_components/angular/angular.js 11607:24 Error: Unexpected request: POST /api/login
现在这是为什么?我应该添加“API /登录”passThrough()?
这是否有帮助? http://stackoverflow.com/questions/24946840/protractor-tests-inconsistently-passing-failing-for-angularjs-app – DTing 2015-04-02 09:06:25