use*_*049 52 javascript testing jasmine protractor
有没有办法在Jasmine expect()失败时打印自定义错误消息?
作为一个例子,对于端到端测试我有一个网页数组,我使用一个测试来转到每个URL并断言每个页面上存在一个元素.我知道我可以把每个人都expect()放到一个单独的测试中,但我宁愿遍历数组并在失败时记录页面URL.
Pau*_*ulL 59
UPDATE
我看到人们仍然在发现这一点.来自Jasmine团队的后来信息是,期望有一个未记录的功能 - 您可以包含自定义失败消息,它只是起作用:
expect( fields[i].element.exists() ).toEqual(true, field[i].name + ' is expected to exist');
Run Code Online (Sandbox Code Playgroud)
这正是我最初想要的.
原始答案如下:
我今天一直在寻找这个,并在这里发表评论:https://github.com/adobe/brackets/issues/2752
已讨论的语法是Jasmine的扩展,允许添加因为 - 因此您可以编写:
expect( fields[i].element.exists() ).toEqual(true).because( field[i].name + 'is expected to exist');
Run Code Online (Sandbox Code Playgroud)
这种情况在几年后仍在讨论中,可能无法实现.我发现这样做的另一种方法是创建自定义匹配器.一般来说,我认为我不鼓励自定义匹配器,但不确定你是否覆盖了它的所有基础,但在这种情况下,我们确实检查了真/假值,所以匹配器并不太可怕.
我们可以使用beforeEach创建自定义匹配器:
beforeEach(function() {
var matchers = {
toEqualBecause: function( value, message ) {
this.message = function() {
return "Expected '" + this.actual + "' to equal '" + value + "' because " + message;
};
return this.actual == value;
}
};
this.addMatchers(matchers);
});
Run Code Online (Sandbox Code Playgroud)
然后,我们可以使用此匹配器来发送包含我们失败的消息:
expect( field[i].element.exists() ).toEqualBecause( true, field[i].name );
Run Code Online (Sandbox Code Playgroud)
这将给出一个失败输出,包括字段名称:
Expected 'false' to equal 'true' because account_name
Run Code Online (Sandbox Code Playgroud)
Opt*_*rks 30
是的,我们可以在Jasmine中的expect()失败时打印自定义错误消息.
Code Snippet:
it('print a custom error message when an expect failed', function() {
var elemenToBeDisplayed=element(by.css("userName"));
/*custom error message will be displayed if expected condition
failed*/
expect(elemenToBeDisplayed.isPresent).toBe(true,'Write your custom
error message here');
});
Run Code Online (Sandbox Code Playgroud)
从 Jasmine 3.3 开始,有一种方法可以通过 withContext 做到这一点
例子:
expect(someValue).withContext('expected someValue to be true...').toBe(true)
Run Code Online (Sandbox Code Playgroud)
另见https://github.com/jasmine/jasmine/issues/641#issuecomment-457037665
| 归档时间: |
|
| 查看次数: |
24139 次 |
| 最近记录: |