我试图理解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:预期'无效的电子邮件或密码'是无效的电子邮件或密码
答案 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的文档。