如果我将sinon与typescript一起使用,那么如何将sinon模拟投射到我的对象的实例?

例如,一个SinonMock将被返回,但我的被测控制器可能需要一个特定的服务传递给它的构造函数.

var myServiceMock: MyStuff.MyService = <MyStuff.MyService (sinon.mock(MyStuff.MyService));

controllerUnderTest = new MyStuff.MyController(myServiceMock, $log);

sinon可以与Typescript一起使用吗?

推荐答案

在将类型缩小到特定类型之前,您可能需要使用<any>类型断言将类型变宽:

var myServiceMock: MyStuff.MyService = 
    <MyStuff.MyService> <any> (sinon.mock(MyStuff.MyService));

只是为了澄清sinon的一个行为——尽管你通过了MyStuff.MyService次,但你通过mock方法得到的任何信息都只用于提供更好的错误消息.

如果希望模拟具有方法和属性,请 Select you need to add them.

如果你想自动创建赝品,你可以从tsUnit中获取FakeFactory,这会创建一个带有一些默认值的赝品版本,你可以 Select 覆盖这些值——在JavaScript中,这是非常简单的事情(另外,通过不使用太多模拟功能,你可以确保你在测试行为而不是实现).

FakeFactory的使用示例:

var target = tsUnit.FakeFactory.getFake<RealClass>(RealClass);
var result = target.run();
this.areIdentical(undefined, result);

Typescript相关问答推荐

Tailwind CSS样式不在Svelte应用程序中呈现

如何将绑定到实例的类方法复制到类型脚本中的普通对象?

类型脚本如何将嵌套的通用类型展开为父通用类型

角形标题大小写所有单词除外

SortKey类型不起作用,尽管它使用的单个类型工作正常<>'

如果一个变量不是never类型,我如何创建编译器错误?

PrimeNG日历需要找到覆盖默认Enter键行为的方法

使用2个泛型类型参数透明地处理函数中的联合类型

为什么ESLint会抱怨函数调用返回的隐式`any`?

TYPE FOR ARRAY,其中每个泛型元素是单独的键类型对,然后在该数组上循环

从非文字数组(object.keys和array.map)派生联合类型

是否可以通过映射类型将函数参数约束为预定义类型?

字符串文字联合的分布式条件类型

类型脚本中参数为`T`和`t|unfined`的重载函数

如何从JWT Reaction中提取特定值

仅当类型为联合类型时映射属性类型

通过函数传递确切的类型,但验证额外的字段

在对象数组中设置值

Typescript 从泛型推断类型

基于泛型的柯里化函数的条件参数