Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Sinon和模拟默认属性_Javascript_Typescript_Sinon - Fatal编程技术网

Javascript Sinon和模拟默认属性

Javascript Sinon和模拟默认属性,javascript,typescript,sinon,Javascript,Typescript,Sinon,假设我有以下文件/代码: Person.ts 导出类人员{ id:字符串; 名字:字符串; lastName:string; isEmployed:boolean=true; isManager:boolean=false; 公共静态名称=():字符串=>this.firstName+''+this.lastName; } 工作历史 从'./Person'导入{Person}; 导出类工作历史记录{ 公共传播:字符串; 公共propB:字符串; public getHistory=(p:Per

假设我有以下文件/代码:

Person.ts
导出类人员{
id:字符串;
名字:字符串;
lastName:string;
isEmployed:boolean=true;
isManager:boolean=false;
公共静态名称=():字符串=>this.firstName+''+this.lastName;
}
工作历史
从'./Person'导入{Person};
导出类工作历史记录{
公共传播:字符串;
公共propB:字符串;
public getHistory=(p:Person):any=>{
//做点什么
//回归历史
}; 
}
格式化程序
从'./Person'导入{Person};
从“/WorkHistory”导入{WorkHistory};
导出类格式化程序{
公共格式化工作(p:人){
设wh:WorkHistory=newworkhistory();
设whData=wh.getHistory(p);
//格式化
//返回格式
}
}
我正在尝试为
formatWork
方法编写一个单元测试。但是,我不知道如何删除
工作历史记录及其属性

以下是到目前为止我得到的信息:

格式化程序.spec.ts
description('formatWork',()=>{
让mockWorkHistory={
普罗帕:“,
propB:'
};
让沙箱;
let格式化程序;
在每个之前(()=>{
sandbox=sinon.createSandbox();
沙盒.stub(工作历史,“原型”).value(mockWorkHistory);
});
之后(()=>{
sandbox.restore();
});
它('应该做点什么',()=>{
//创建person对象
格式化程序=新格式化程序();
var结果=格式化程序。格式化工作(个人);
控制台日志(结果);
});
});
我尝试了存根和沙盒替换,但是,我似乎无法覆盖默认属性或方法

目前,上面的代码在Phantom 2.1.1中引发了一个异常:
TypeError:试图更改不可配置属性的可枚举属性。

此外,我的设备中的
console.log
显示
WorkHistory
的所有默认属性,而不是覆盖的值


我错过了什么?我做错了什么?

Sinon不能满足您的所有要求。你需要一些工具来模拟你的导入,比如开玩笑或者


Sinon是一种非常方便的生成存根的方法,但该工具对您的模块结构一无所知。您应该找到一种方法,将您的Sinon mock类传递给您正在测试的模块。

由于使用webpack,我最终不得不使用
ts mock imports
。谢谢