什么是上下文中静态类型javascript的示例,以更好地进行单元测试



我是测试新手,但最近,我一直在尝试使用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的指南。在代码之前和之后的代码之前都包含两者,以及下面自述文件中的分步过程。

相关内容

  • 没有找到相关文章