diff --git a/test/index.html b/test/index.html index 2cd3a5f8c..255766ceb 100644 --- a/test/index.html +++ b/test/index.html @@ -24,6 +24,9 @@ Function.prototype._bind = Function.prototype.bind; Function.prototype.bind = function() { return function() {}; }; + Object._create = Object.create; + Object.create = function() {}; + Object._defineProperty = Object.defineProperty; Object.defineProperty = function() {}; @@ -48,6 +51,11 @@ } else { delete Function.prototype.bind; } + if (Object._create) { + Object.create = Object._create; + } else { + delete Object.create; + } if (Object._defineProperty) { Object.defineProperty = Object._defineProperty; } else { @@ -60,6 +68,7 @@ } delete Array._isArray; delete Function.prototype._bind; + delete Object._create; delete Object._defineProperty; delete Object._keys; diff --git a/test/test.js b/test/test.js index ab81d2397..c1ee78e88 100644 --- a/test/test.js +++ b/test/test.js @@ -261,7 +261,7 @@ } }); - test('avoids overwritten native methods', 3, function() { + test('avoids overwritten native methods', 4, function() { function message(methodName) { return '`_.' + methodName + '` should avoid overwritten native methods'; } @@ -271,21 +271,40 @@ if (document) { try { var actual = lodashBadShim.bind(function() { return this.a; }, object)(); - } catch(e) { } + } catch(e) { + actual = null; + } ok(actual, message('bind')); try { actual = lodashBadShim.isArray([]); - } catch(e) { } + } catch(e) { + actual = null; + } ok(actual, message('isArray')); try { actual = lodashBadShim.keys(object); - } catch(e) { } + } catch(e) { + actual = null; + } deepEqual(actual, ['a'], message('keys')); + + try { + var Foo = function() { + this.a = 2; + }; + + var actual = _.transform(new Foo, function(result, value, key) { + result[key] = value * value; + }); + } catch(e) { + actual = null; + } + ok(actual instanceof Foo, message('transform')); } else { - skipTest(3); + skipTest(4); } }); }());