我对茉莉很陌生。我打算将其用于香草javascript项目。初始配置轻而易举,但是使用spyOn
时我收到对象未定义的错误。
我已经下载了版本3.4.0 Jasmine Release Page,并将文件“按原样”添加到我的项目中。然后,我相应地更改了jasmine.json
文件,并查看所有通过的示例测试。但是,在私有对象上尝试spyOn
时,出现了未定义错误,
if (typeof (DCA) == 'undefined') {
DCA = {
__namespace: true
};
}
DCA.Audit = {
//this function needs to be tested
callAuditLogAction: function (parameters) {
//Get an error saying D365 is not defined
D365.API.ExecuteAction("bu_AuditReadAccess", parameters,
function (result) { },
function (error) {
if (error != undefined && error.message != undefined) {
D365.Utility.alertDialog('An error occurred while trying to execute the Action. The response from server is:\n' + error.message);
}
}
);
}
}
和我的规格等级
describe('Audit', function(){
var audit;
beforeEach(function(){
audit = DCA.Audit;
})
describe('When calling Audit log function', function(){
beforeEach(function(){
})
it('Should call Execute Action', function(){
var D365 = {
API : {
ExecuteAction : function(){
console.log('called');
}
}
}
// expectation is console log with say hello
spyOn(D365.API, 'ExecuteAction').and.callFake(() => console.log('hello'));
var params = audit.constructActionParameters("logicalName", "someId", 'someId');
audit.callAuditLogAction(params);
})
})
})
如您所见,我的spec类并不了解实际的D365
对象。我希望在不注入D365对象的情况下存根。我需要存根整个365库并将其链接到我的测试运行器html吗?
答案 0 :(得分:0)
经过一番思考后,我开始工作了。因此,仍然需要将包含D365
的库添加到我的测试运行器html文件中。之后,我可以伪造如下的方法调用,
it('Should call Execute Action', function(){
spyOn(D365.API, 'ExecuteAction').and.callFake(() => console.log('hello'));
var params = audit.constructActionParameters("logicalName", "someId", 'someId');
audit.callAuditLogAction(params);
})
它现在正在工作。