首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用resharper testr jasmin测试spa js模块?

如何使用resharper testr jasmin测试spa js模块?
EN

Stack Overflow用户
提问于 2013-08-14 22:37:22
回答 1查看 504关注 0票数 1

在阅读了VS中的javascript单元测试/ bdd之后,我发现您可以使用以下组合:

代码语言:javascript
复制
- ReSharper - support for PhantomJS headless + Jasmine/QUnit
- Testr - mock Require dependencies

我在一个测试脚本中使用了Jasmine,并且能够成功地运行一些简单的测试,并且在同一个文件中声明了一些函数。

但是,我找不到/构建了一个端到端的有效示例来测试带有依赖项的js模块。我正在尝试构建John Papa在SPA Jumpstart示例中使用的示例。

因此,给定一个在datacontext.js中具有依赖关系的people.js视图模型模块:

代码语言:javascript
复制
define(['services/datacontext'],
 function (datacontext) {
var peopleViewModel = {        
                       title: 'People page'
                      };
return peopleViewModel;
})

文件夹结构:

代码语言:javascript
复制
/App/Viewmodels : people.js
/App/Services : datacontext.js
/App/Tests : peopletests.js

我需要在peopletests.js中添加什么才能运行此测试?

代码语言:javascript
复制
describe("My Tests Set", function () {
 it("People Title Test", function () {
   expect(peopleViewModel.title()).toEqual("People page");
 });
});
EN

回答 1

Stack Overflow用户

发布于 2014-01-16 10:28:15

试试这个:

  1. 添加require.js作为引用路径
  2. 添加require.config脚本作为引用路径
  3. load require模块。

peopletests.js:

代码语言:javascript
复制
/// <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:

代码语言:javascript
复制
//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

代码语言:javascript
复制
define(['dataContext'],
 function (datacontext) {
var peopleViewModel = {        
                       title: 'People page'
                      };
return peopleViewModel;
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18234707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档