mirror of
https://github.com/zhigang1992/angular.js.git
synced 2026-04-25 20:45:30 +08:00
split mocks and create $log and $exceptionHandler mocks
- split mocks between angular-mocks.js and mocks.js - src/angular-mocks.js now contains only mocks that we want to ship - test/mocks.js contains mocks that we use internally for testing angular - created angular.mock namespace - created public $exceptionHandler mock rethrows errors - created public $log mock stores all logs messages in an array that can be accessed to make assertions - internally we now have factory to create $exceptionHandler that we can assert on - internally we also keep track of all messages logged and fail tests if messages were not expected and cleaned up (checked via global beforeEach and afterEach) - updated RakeFile and docs reader.js to point to the new angular-mocks.js location - made real $exceptionHandler and $log factories accessible from tests and simplified their specs - fixed typos in several spec descriptions - added log assertions throughout the test suite
This commit is contained in:
@@ -59,11 +59,59 @@ beforeEach(function(){
|
||||
return this.actual.hasClass ?
|
||||
this.actual.hasClass(clazz) :
|
||||
jqLite(this.actual).hasClass(clazz);
|
||||
},
|
||||
|
||||
toEqualError: function(message) {
|
||||
this.message = function() {
|
||||
var expected;
|
||||
if (this.actual.message && this.actual.name == 'Error') {
|
||||
expected = toJson(this.actual.message);
|
||||
} else {
|
||||
expected = toJson(this.actual);
|
||||
}
|
||||
return "Expected " + expected + " to be an Error with message " + toJson(message);
|
||||
}
|
||||
return this.actual.name == 'Error' && this.actual.message == message;
|
||||
},
|
||||
|
||||
toMatchError: function(messageRegexp) {
|
||||
this.message = function() {
|
||||
var expected;
|
||||
if (this.actual.message && this.actual.name == 'Error') {
|
||||
expected = toJson(this.actual.message);
|
||||
} else {
|
||||
expected = toJson(this.actual);
|
||||
}
|
||||
return "Expected " + expected + " to match an Error with message " + toJson(messageRegexp);
|
||||
}
|
||||
return this.actual.name == 'Error' && messageRegexp.test(this.actual.message);
|
||||
}
|
||||
});
|
||||
|
||||
$logMock.log.logs = [];
|
||||
$logMock.warn.logs = [];
|
||||
$logMock.info.logs = [];
|
||||
$logMock.error.logs = [];
|
||||
});
|
||||
|
||||
afterEach(clearJqCache);
|
||||
afterEach(function() {
|
||||
// check $log mock
|
||||
forEach(['error', 'warn', 'info', 'log'], function(logLevel) {
|
||||
if ($logMock[logLevel].logs.length) {
|
||||
forEach($logMock[logLevel].logs, function(log) {
|
||||
forEach(log, function deleteStack(logItem) {
|
||||
if (logItem instanceof Error) delete logItem.stack;
|
||||
});
|
||||
});
|
||||
|
||||
throw new Error("Exprected $log." + logLevel + ".logs array to be empty. " +
|
||||
"Either a message was logged unexpectedly, or an expected log message was not checked " +
|
||||
"and removed. Array contents: " + toJson($logMock[logLevel].logs));
|
||||
}
|
||||
});
|
||||
|
||||
clearJqCache();
|
||||
});
|
||||
|
||||
function clearJqCache(){
|
||||
var count = 0;
|
||||
|
||||
Reference in New Issue
Block a user