我日常工作的很大一部分涉及使用 Dynamics CRM 和编写 JS 来扩展表单上的功能。
Dynamics 中的大多数客户端交互都涉及在表单加载时使用为您提供的对象,即Xrm。所以你可能有类似的东西:
function OnLoad() {
Xrm.Page.getAttribute('name').setValue('Stackoverflow!');
var x = Xrm.Page.getAttribute('name').getValue();
}
我倾向于为 Xrm 对象编写一个包装器,主要是因为它比记住一些链接要容易得多,并最终得到如下内容:
function WrappedXrm(realXrm) {
var xrm = realXrm;
this.getValue(name) {
return xrm.getAttribute(name).getValue();
}
}
//and then use it as so
var myXrm = new FakeXrm(Xrm);
var myXrmValue = myXrm.getValue('Name');
我正在尝试QUnit,想知道在这种情况下我将如何进行单元测试?
显然上面的例子是一行,它可能不值得测试。但是假设那里有一些我想测试的业务逻辑。
我能看到的唯一方法是在每次测试之前按照以下方式进行一些设置
var fakeXrm = {};
fakeXrm.Page = {};
fakeXrm.Page.getAttribute = function(name) {
var tempAttr = {};
tempAttr.getValue = function() {
return 'A fake value';
}
}
然后在'A fake value'
被退回时进行测试,但这对我来说根本不“感觉”。
我哪里错了?