A simplified version of mgsdev response, put the loading code in a beforeEach statement, that way you can write short expectations.
module:
define("stringCalculator", function () {
return {
calculate: function (string) {
var result = 0;
string.split("+").forEach(function(number) {
result += parseInt(number);
});
return result;
}
};
});
test file:
if calculator is undefined it will try to load it before every expectation.
/// <reference path="~/Scripts/require.js"/>
/// <reference path="~/code/stringCalculator.js"/>
describe("string calculator", function () {
var calculator;
beforeEach(function () {
if (!calculator) {
require(["stringCalculator"], function (stringCalculator) {
calculator = stringCalculator;
});
waitsFor(function () {
return calculator;
}, "loading external module", 1000);
}
});
it("should add 1 and 2", function () {
var result = calculator.calculate("1+2");
expect(result).toEqual(3);
});
it("should add 2 and 2", function () {
var result = calculator.calculate("2+2");
expect(result).toEqual(4);
});
it("should add 1, 2 and 3", function() {
var result = calculator.calculate("1+2+3");
expect(result).toEqual(6);
});
});