2 つのテストがあります。
it('should filter the phone list as user types into the search box', function() {
var results = ptor.findElements(protractor.By.repeater('phone in phones').column('phone.name'));
results.then(function(arr) {
expect(arr.length).toEqual(3);
});
var queryInput = ptor.findElement(protractor.By.input('query'));
queryInput.sendKeys('nexus');
results = ptor.findElements(protractor.By.repeater('phone in phones').column('phone.name'));
results.then(function(arr) {
expect(arr.length).toEqual(1);
});
queryInput.clear();
queryInput.sendKeys('motorola');
results = ptor.findElements(protractor.By.repeater('phone in phones').column('phone.name'));
results.then(function(arr) {
expect(arr.length).toEqual(2);
});
});
it('should display the current filter value within an element with id "status"',
function() {
//expect(element('#status').text()).toMatch(/Current filter: \s*$/);
var queryInput = ptor.findElement(protractor.By.input('query'));
queryInput.clear();
expect(ptor.findElement(protractor.By.id('status')).getText()).toMatch('Current Filter:');
//input('query').enter('nexus');
//queryInput.clear();
//queryInput.sendKeys('nexus');
//expect(element('#status').text()).toMatch(/Current filter: nexus\s*$/);
//expect(ptor.findElement(protractor.By.id('status')).getText()).toMatch('^\Current Filter:.');
//alternative version of the last assertion that tests just the value of the binding
//using('#status').expect(binding('query')).toBe('nexus');
});
最初のテストである検索ボックスはうまく機能します。queryInput に入力された最後の値が 2 番目のテストに引き継がれ、queryInput.clear() が機能しないため、2 番目のテスト status はパスしません。しかし、2回目のテストで、queryInput.sendKeys("something") を呼び出すと、"something" が表示されます。2 番目のテストで clear() を取り出すと、「motorolasomething」が表示されます。したがって、clear() が機能しているように見えますが、2 番目のテストに clear() があるだけではテストに合格しません。2 番目のテストを実行すると、clear() が呼び出されても「motorola」と表示されます。二次試験前。
後に sendKeys() がないのに、2 番目のテストで clear() がクリアされないのはなぜでしょうか。