我是测试新手,但最近,我一直在尝试使用angularJS和Jasmine。
随着ES6的出现,新的框架/语言也随之而来,比如:atScript和google angular-dart。 两者都现在支持可选类型的javascript,并且他们声称它变得更容易测试?
问题:1. 作为测试新手,有人可以给我一个实际的例子/用例来说明静态类型的 JavaScript 如何更适合单元测试。 此外,香草JavaScript单元测试不足的示例?
最后,如果这不是堆栈溢出问题,我们可以将其移动到适当的堆栈子域吗?
基于类型的断言是可能的。例如:
is(value : Dynamic, type : Dynamic, ?msg : String , ?pos : PosInfos)
当"value"参数属于传递的类型"type"时,成功断言。
raises(method:Void -> Void, ?type:Class<Dynamic>, ?msgNotThrown : String , ?msgWrongType : String, ?pos : PosInfos)
它用于测试在某些情况下必须做出反应引发错误的应用程序。此断言保证错误类型正确(如果未指定,则为动态)。
此代码:
enum Color { R, G, B }
function f1(x: Color | string) {
if (typeof x === "number") {
var y = x;
var y: Color;
}
else {
var z = x;
var z: string;
}
}
function f2(x: Color | string | string[]) {
if (typeof x === "object") {
var y = x;
var y: string[];
}
if (typeof x === "number") {
var z = x;
var z: Color;
}
else {
var w = x;
var w: string | string[];
}
if (typeof x === "string") {
var a = x;
var a: string;
}
else {
var b = x;
var b: Color | string[];
}
}
需要以下垫片:
- 枚举
- 类型提示 (
x: Color
) - 联合类型 (
|
)
和这个代码:
class A {
propA: number;
}
class B {
propB: number;
}
class C extends A {
propC: number;
}
declare function isB(p1): p1 is B;
declare function isC(p1): p1 is C;
declare function retC(x): C;
declare function funA<T>(p1: (p1) => T): T;
declare function funB<T>(p1: (p1) => T, p2: any): p2 is T;
declare function funC<T>(p1: (p1) => p1 is T): T;
declare function funD<T>(p1: (p1) => p1 is T, p2: any): p2 is T;
declare function funE<T, U>(p1: (p1) => p1 is T, p2: U): T;
let a: A;
let test1: boolean = funA(isB);
if (funB(retC, a)) {
a.propC;
}
let test2: B = funC(isB);
if (funD(isC, a)) {
a.propC;
}
let test3: B = funE(isB, 1);
需要以下垫片:
- 用户定义的类型防护 (
p1 is B
) - 返回值的类型转换 (
funA<T>(p1: (p1) => T): T
)
引用
fponticelli/utest:Haxe的跨平台单元测试系统
Typescript 从传递的函数返回类型推断返回类型
打字稿中的函数上的 ' : ' 和 ' => ' 有什么区别?
卡布奇诺 - 使用 OJTest 进行测试
ECMAScript 6:新功能:概述和比较
TypeScript Github repo | typeGuardFunctionGenerics.ts
TypeScript Github 存储库 |TypeGuardWithEnumUnion.ts
保留关键字列表 ·问题 #2536 ·Microsoft/打字稿
即将推出的 TypeScript 1.8 中重要的功能 -- Visual Studio 杂志
和我一起学习 - 打字稿:类型研究 - CodeProject
TypeScript 2.0:更好的数据类型和类判别器 -- Visual Studio 杂志
踢打字稿的轮胎
TypeScript for ActionScript Developers
Hello World: 如何设置 Apache FlexJS 以将 ActionScript 转换为 JavaScript - NextGen ActionScript
Microsoft/TypeScript-React-Conversion-Guide:将简单的JavaScript/React项目转换为TypeScript的指南。在代码之前和之后的代码之前都包含两者,以及下面自述文件中的分步过程。