使用Jasmine测试TypeScript类
Testing TypeScript classes with Jasmine
我想问您如何测试接受另一个类的构造函数实例的类。例如,我想测试方法"hasChildRoutes()":
class Route implements ng.route.IRoute {
public url: string;
public config: RouteConfig;
constructor(url: string, config: RouteConfig) {
this.url = url;
this.config = config;
}
public hasChildRoutes(): boolean {
return this.config.childRoutes.length > 0;
}
}
我为此写了糟糕的单元测试(我正在创建另一个类的新实例,在我看来这很糟糕):
beforeEach(() => {
routeSetting = new RouteSetting(1, '');
routeConfig = new RouteConfig('', '', routeSetting, [], '');
});
describe('Methods test', () => {
var childRoute: Route;
beforeEach(() => {
route = new Route('', routeConfig);
});
it('sould return false when Route has no child routes', () => {
expect(route.hasChildRoutes()).toBeFalsy();
});
it('sould return true when Route has child routes', () => {
routeConfig = new RouteConfig('', '', routeSetting, [route], '');
route = new Route('', routeConfig);
expect(route.hasChildRoutes()).toBeTruthy();
});
});
在arrange/act/assert中提供依赖项实例作为arrange的一部分是完全有效的。
话虽如此,如果你想单独测试a
(取决于b
),你可以提供一个模拟b
,例如使用sinonjs:http://sinonjs.org/
关于这一点只有几个想法。
您的测试看起来不错,但似乎没有必要以这种方式使用beforeEach和afterEach。它使测试变得混乱和不可读。更像这样:
it('should return false when Route has no child routes', () => {
// arrange
routeSetting = new RouteSetting(1, '');
routeConfig = new RouteConfig('', '', routeSetting, [], '');
// act
route = new Route('', routeConfig);
// assert
expect(route.hasChildRoutes()).toBeFalsy();
});
另外,hasChildRoutes()不应该是RouteConfig的属性吗?而不是Route?
相关文章:
- 使用Jasmine测试TypeScript类
- 为浏览器编写TSX单元测试(JSX/React的TypeScript)
- 注入$http在使用typescript的jasmine测试中失败
- 使用Karma和Jasmine从JS测试文件测试编译的TypeScript
- 如何获得'模块'Jasmine单元测试中的TypeScript
- 用TypeScript编写的Geocoder谷歌地图服务的因果报应异步测试
- TypeScript:如何测试客户端代码
- 运行用TypeScript编写的Jasmine测试
- Angularjs在使用jasmine和karma测试typescript angangular时出现错误
- JavaScript单元测试和TypeScript单元测试有什么不同?
- 哪个TypeScript/JavaScript单元测试框架的API与JUnit最相似
- Typescript单元测试中的mock
- 有没有测试框架支持TypeScript中的内联测试?
- 在浏览器和Node.JS中导入用Mocha/Chai/TypeScript编写的测试文件
- 使用Chutzpah运行QUnit (TypeScript)测试会在已经启动的情况下在测试上下文之外调用start()
- 单元测试Typescript装饰器
- 如何使用jasmine+TypeScript测试用常量调用的函数
- 使用 Jasmine 和 TypeScript 进行单元测试
- Karma不会沿着javascript测试运行我的typescript测试
- 在编写TypeScript单元测试时,我可以对依赖进行猴子补丁吗?