2017-03-08 64 views
2

我有一个量角器茉莉花测试,我试图检查页面上的所有字段都是空白的。我写了一个使用for循环的简单测试。现在,我的问题是,我试图坚持量角器/茉莉花的最佳做法,说每个期望条件只有一个测试。如何将此代码更改为只有一种期望条件?如何在量角器中结合多个期望条件?

这里是我写的测试:

it("should check that all input fields are blank", function() { 
    allInputs.then(function(elements) { 
     elements.forEach(function(element){ 
      expect(element.getText()).toEqual(""); 
     }); 
    }); 
}); 

回答

2

在短:你可以只是这样做 - expect(allInputs.getText()).toEqual("")

更多详细信息:element.all().getText()返回一个数组,其中包含所有子元素的文本值,并且由于您希望值为空,请检查总字符串是否为空。

要回答你的

"How do we handle a scenario when we have need multiple validations to be performed"

预期时提供条件选项通用的问题 - 如OR,等请参考official documentation here

var EC = protractor.ExpectedConditions; 
var titleContainsFoo = EC.titleContains('Foo'); 
var titleIsNotFooBar = EC.not(EC.titleIs('FooBar')); 
// Waits for title to contain 'Foo', but is not 'FooBar' 
browser.wait(EC.and(titleContainsFoo, titleIsNotFooBar), 5000); 

如果你想将多个预计

Promise.all[ 
expect(allInputs.getText()).toEqual(""), 
expect(allOutputs.getText()).toEqual("") 
].then(function(){ 
    done(); 
    }) 

UPDATE 1:Promise.all上面的语法是不正确的。它应该是Promise.all([Array of Promises]),我没有卷曲的支架。

这是做

describe('Describe something', function() { 
    it('check check', function(done) { 
     browser.get('http://www.protractortest.org/#/') 
     Promise.all([ 
      expect(browser.getCurrentUrl()).toContain('protractortest'), 
      expect(browser.getCurrentUrl()).toContain('org')]).then(function() { 
      done(); 
     }).catch(function() { 
      done.fail('somehow the Url is incorrect'); 
     }) 
     browser.sleep(10000) 
    }); 
}); 

的正确方法这使我们能够灵活地组中的所有验证在测试用例到一个单一的承诺(提供由预计的Array返回所有的承诺)。这将帮助我们分组所有的断言和测试用例的合格/不合格,并为所有的验证集合抛出自定义错误消息。更新2:如上所述。 element.all().getText()返回一个数组来比较,我比较不正确的数组对象的字符串object.We需要做array.join()和比较

allInputs.getText().then(function(values){ 
    expect(values.join('')).toEqual('') 
}) 
+0

谢谢!这个答案至少是我的两个概念,也许更多:)但我有两个问题。为什么我们需要在你提供的第二个代码块中等待?其次,在这种情况下,我们是否需要最后一个代码示例? – Ravi

+0

关于这个问题 - “为什么我们需要在你提供的第二个代码块中等待?” - 我只是从Protractor教程中选择了一个例子,但你不需要这样做。对于下一个问题 - “其次,在这种情况下,我们是否需要最后一个代码示例?”..当测试用例真的需要多个期望时,我使用此代码..我所做的是......我将所有由不同的返回的promise期望根据Promise.all()并通过测试用例只有他们都解决成功 – AdityaReddy

+0

感谢您的答复。 Promise.all似乎是一种很好的方式,但测试将包含多个期望。对此有何想法? – Ravi

相关问题