我使用angularJS开发应用程序。为了测试它我使用量角器。
我想检查输入区域中的值。这是我的意见:
<input id="rank-max-range" class="form-control has-feedback" name="inputMax" type="number" placeholder="Maximum" ng-model="selectedItem.range.max" min="{{selectedItem.range.min}}" max="{{selectedItem.answers.length}}">
这是测试:
it('should be fill the max range with the given value', function() {
element(by.id('rank-max-range')).sendKeys(2);
expect(element(by.id('rank-max-range')).getText()).toEqual(2);
});
问题是它没有用。我在文档中发现可以使用getAttribute('value')
。但就我而言,我的输入没有值属性。
我想知道是否可以检查ng-model
的内容,但我找不到解决方案。
您是否知道如何实现此测试?
答案 0 :(得分:5)
通常getAttribute('value')
应该有效。 getText()
因为输入元素没有内部文本而无法工作。
expect(element(by.id('rank-max-range')).getAttribute('value')).toEqual(2);
您是否尝试记录getAttribute('value')
的结果?
答案 1 :(得分:1)
getText()
肯定不会有效,因为这是一个input
,一旦设置,它的值就会在value
属性中。您提供的HTML不包含value
,因为在未呈现页面且未设置值时,这是源HTML。 getAttribute('value')
是前往此处的方式:
var numberInput = element(by.id('rank-max-range'));
numberInput.sendKeys("2");
expect(numberInput.getAttribute('value')).toEqual("2");
您实际上可以通过在控制台上转储innerHTML
来查看正在设置的value
:
numberInput.sendKeys("2");
numberInput.getInnerHtml().then(function (html) {
console.log(html);
});
我想知道是否可以检查ng-model的内容,但我找不到解决方案。
您可以使用evaluate()
查看/检查模型的值:
expect(numberInput.evaluate('selectedItem.range.max')).toEqual(2);