Jac*_*sey 6 javascript jasmine
我是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));
});
});
Run Code Online (Sandbox Code Playgroud)
Expected null to equal <jasmine.any(function String() { [native code] })>.Expected null to equal <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();
});
});
Run Code Online (Sandbox Code Playgroud)
tek*_*ara 12
编写自己的自定义匹配器:
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5433 次 |
| 最近记录: |