我是Jasmine的新手,遇到了我希望String或null的情况.我尝试做一个或在toEqual之内,但我看到一些奇怪的结果让我相信我会以错误的方式进行.这种情况的最佳方法是什么?
也许我只是在考虑我的测试错误.我是否应该放弃一个测试以测试这两种情况的想法?
describe("Jasmine",function () { //1 it("should be able to handle any(String) || null within toEqual for string",function () { expect("aString").toEqual(jasmine.any(String) || null); }); //2 it("should be able to handle any(String) || null within toEqual for null",function () { expect(null).toEqual(jasmine.any(String) || null); }); //3 it("should be able to handle null || any(String) within toEqual for string",function () { expect("aString").toEqual(null || jasmine.any(String)); }); //4 it("should be able to handle null || any(String) within toEqual for null",function () { expect(null).toEqual(null || jasmine.any(String)); }); });
>通过
>期望null等于< jasmine.any(function String(){[native code]})>.
>通过
>期望null等于< jasmine.any(function String(){[native code]})>.
我意识到还有一个toBeNull(),这可能是为什么结果如此不稳定,但没有“或”链接我不知道如何合并它.
(运行Jasmine 1.3.1修订版1354556913)
解决了!如果有人有兴趣,请在下方提供完整
describe("Jasmine",function () { beforeEach(function () { this.addMatchers({ toBeStringOrNull: function () { var actual = this.actual; this.message = function () { return "Expected " + actual + " to be either string or null"; }; return typeof actual === 'string' || actual instanceof String || actual === null; } }); }); //1 it("should be able to handle any(String) || null within toEqual for string",function () { expect("aString").toBeStringOrNull(); }); //2 it("should be able to handle any(String) || null within toEqual for null",function () { expect(null).toBeStringOrNull(); }); //3 it("should be able to handle null || any(String) within toEqual for string",function () { expect("aString").toBeStringOrNull(); }); //4 it("should be able to handle null || any(String) within toEqual for null",function () { expect(null).toBeStringOrNull(); }); });
解决方法
编写自己的自定义匹配器:
toBeStringOrNull: function() { var actual = this.actual; this.message = function () { return "Expected " + actual + " to be either string or null"; } return typeof actual === 'string' || actual instanceof String || actual === null; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。