我是测试新手,但最近我一直在尝试使用 angularJS 和 Jasmine。
随着 ES6 的出现,新的框架/语言也随之而来,例如:atScript 和 google Angular-dart。两者现在都支持可选类型 javascript 并且他们声称它变得更容易测试?
问题: 1. 作为测试新手,有人可以给我一个实际的示例/用例来说明静态类型的 javascript 如何更好地进行单元测试。此外,还有一个普通 javascript 单元测试无法实现的示例?
最后,如果这不是 stackoverflow 问题,我们可以将其移动到适当的 stack 子域吗?
最佳答案
基于类型的断言是可能的。例如:
is(value : Dynamic, type : Dynamic, ?msg : String , ?pos : PosInfos)
Asserts successfully when the 'value' parameter is of the of the passed type 'type'.
raises(method:Void -> Void, ?type:Class<Dynamic>, ?msgNotThrown : String , ?msgWrongType : String, ?pos : PosInfos)
It is used to test an application that under certain circumstances must react throwing an error. This assert guarantees that the error is of the correct type (or Dynamic if none is specified).
这段代码:
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: cross-platform unit testing system for Haxe
Typescript infer return type from passed functions return type
What is the difference between ' : ' and ' => 'on functions in typescript?
List of reserved keywords · Issue #2536 · Microsoft/TypeScript
Features That Will Matter in the Upcoming TypeScript 1.8 -- Visual Studio Magazine
TypeScript 2.0: Even Better Data Typing and Class Discriminants -- Visual Studio Magazine
关于javascript - 为了更好地进行单元测试,静态类型 javascript 的示例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27916136/