在阅读了VS中的javascript单元测试/ bdd之后,我发现您可以使用以下组合:
- ReSharper - support for PhantomJS headless + Jasmine/QUnit
- Testr - mock Require dependencies我在一个测试脚本中使用了Jasmine,并且能够成功地运行一些简单的测试,并且在同一个文件中声明了一些函数。
但是,我找不到/构建了一个端到端的有效示例来测试带有依赖项的js模块。我正在尝试构建John Papa在SPA Jumpstart示例中使用的示例。
因此,给定一个在datacontext.js中具有依赖关系的people.js视图模型模块:
define(['services/datacontext'],
function (datacontext) {
var peopleViewModel = {
title: 'People page'
};
return peopleViewModel;
})文件夹结构:
/App/Viewmodels : people.js
/App/Services : datacontext.js
/App/Tests : peopletests.js我需要在peopletests.js中添加什么才能运行此测试?
describe("My Tests Set", function () {
it("People Title Test", function () {
expect(peopleViewModel.title()).toEqual("People page");
});
});发布于 2014-01-16 10:28:15
试试这个:
peopletests.js:
/// <reference path="~/Scripts/require.js"/>
/// <reference path="~/App/requireConfig.js"/>
describe("My Tests Set", function () {
var people;
beforeEach(function () {
if (!people) { //if people is undefined it will try to load it
require(["people"], function (peopleViewModel) {
people = peopleViewModel;
});
//waits for people to be defined (loaded)
waitsFor(function () {
return people;
}, "loading external module", 1000);
}
});
it("People Title Test", function () {
expect(people.title).toEqual("People page");
});
});requireConfig.js:
//beware of the port, if your app is runing in port 8080
//you need to specified that to require since resharper whould use a random port
//when running tests
require.config({
baseUrl: 'http://localhost:8080/App/',
paths: {
people: 'ViewModels/people',
dataContext: 'Services/datacontext'
}
});people.js
define(['dataContext'],
function (datacontext) {
var peopleViewModel = {
title: 'People page'
};
return peopleViewModel;
})https://stackoverflow.com/questions/18234707
复制相似问题