我日常工作的很大一部分工作涉及使用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'
被退回,但这根本不适合我。
我哪里错了?