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);
}
});
}());