Skip to content

Instantly share code, notes, and snippets.

@EndangeredMassa
Created June 18, 2012 19:14
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save EndangeredMassa/2950153 to your computer and use it in GitHub Desktop.
Save EndangeredMassa/2950153 to your computer and use it in GitHub Desktop.
JavaScript Testing Best Practices: Part 2
view = Backbone.View.extend
initialize:
@render()
render:
$el.html('<div class="content">fun times</div>')
src_files:
# your normal script files
helpers:
- helpers/suiteHealthHelper.js
spec_files:
- "**/*[sS]pec.js"
- spec/javascripts/support/suite_health.js
# calculate total
subtotal = getSubTotal()
state = getState()
tax = getTax(subtotal, state)
discounts = getDiscounts()
total = subtotal + tax - discounts
calculateTotal = ->
subtotal = getSubTotal()
state = getState()
tax = getTax(subtotal, state)
discounts = getDiscounts()
return subtotal + tax - discounts
describe 'Jasmine Suite', ->
it 'has no errors from window.onerror', ->
expect(JSON.stringify(window.__errors)).toBe('[]')
describe 'does not pollute global state', ->
it 'by setting cookies', ->
expect(document.cookie).toBe('')
it 'by setting local storage values', ->
actual = ''
for key in localStorage
value = localStorage.getItem(key)
actual += "#{key}:#{value};"
expect(actual).toBe('')
it 'by setting session storage values', ->
actual = ''
for key in sessionStorage
value = sessionStorage.getItem(key)
actual += "#{key}:#{value};"
expect(actual).toBe('')
it 'by leaving DOM elements in the document', ->
$pollution = $('body>*:not(#jasmine_content, .jasmine_reporter)')
expected = "Pollution Elements Count: #{$pollution.length}"
expect(expected).toBe("Pollution Elements Count: 0")
describe 'does not log to the console', ->
it 'with console.log', ->
expect(JSON.stringify(window.consoleLogs)).toBe('[]')
it 'with console.dir', ->
expect(JSON.stringify(window.consoleDirs)).toBe('[]')
it 'with console.warn', ->
expect(JSON.stringify(window.consoleWarns)).toBe('[]')
it 'with console.error', ->
expect(JSON.stringify(window.consoleErrors)).toBe('[]')
window.__errors = []
window.onerror = (message, file, line) ->
window.__errors.push
message: message
file: file
line: line
return false
if (window.addEventListener)
window.addEventListener 'onerror', (message, file, line) ->
window.__errors.push
message: message
file: file
line: line
return false
window.consoleLogs = []
window.consoleDirs = []
window.consoleWarns = []
window.consoleErrors = []
if (window['console'])
_consoleLog = console.log
window.console.log = (message) ->
_consoleLog(message)
window.consoleLogs.push(message)
_consoleDir = console.dir
window.console.dir = (message) ->
_consoleDir(message)
window.consoleDirs.push(message)
_consoleWarn = console.warn
window.console.warn = (message) ->
_consoleWarn(message)
window.consoleWarns.push(message)
_consoleError = console.error
window.console.error = (message) ->
_consoleError(message)
window.consoleErrors.push(message)
window.alert = (message) ->
errorMessage = 'Cannot call alert in specs. Called with: ' + message
throw new Error(errorMessage)
window.confirm = (message) ->
errorMessage = 'Cannot call confirm in specs. Called with: ' + message
throw new Error(errorMessage)
#TODO: Move this to another file
processOrders = ->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment