如何在chai中使用文本字符串?

时间:2016-12-07 07:12:00

标签: javascript selenium-webdriver mocha chai

我试图理解chai.js中的期望行为。我有代码来检查登录是否因无效凭据而失败。这是我的代码:

describe('Login', function() {
  before(function(done) {
    driver.get('https://pluma-dev.herokuapp.com/client-sign-in').then(done);
  });
  it('Login with Incorrect credentials', function( done ) {
driver.findElement(webdriver.By.name("username")).sendKeys("kushal.d.joshi+29@gmail.com");
      driver.findElement(webdriver.By.name("password")).sendKeys("123"); 
      driver.findElement(webdriver.By.className("client-onboarding-signin-btn")).click().then(function(){
      driver.findElement(By.css(".has-error")).getText().then(function (text) {
        console.log(text);
        try{
                expect(text).to.be.a("Invalid email or password");
                done();
        } catch (e) {
                done(e);
        }

      });

});

    });

});

根据我的理解,这个测试用例应该通过,因为我期待无效的用户名和密码,并得到相同的。但是,它会抛出一个断言错误。那是, 1)使用不正确的凭据登录登录:      AssertionError:预期'无效的电子邮件或密码'是无效的电子邮件或密码

1 个答案:

答案 0 :(得分:6)

您使用的是错误的断言。你想使用:

 <rootElement attr1="value1" attr2="value2">
      <child><child>childValue</child></child>
 </rootElement>

expect(text).to.equal("Invalid email or password"); (实际上只是对名为.to.be.a的断言的调用)断言该值具有某个类型。以下是一些说明差异的代码:

a

第一次测试将失败。第二和第三是正确的用法,所以他们通过。

您可以找到const expect = require("chai").expect; it("a", () => expect("foo").to.be.a("foo")); it("equal", () => expect("foo").to.equal("foo")); it("correct use of a", () => expect("foo").to.be.a("string")); here的文档。