日々の仕事の大部分は、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を試していますが、このシナリオでユニットテストをどのように行うのでしょうか。
明らかに、上記の例は1行なので、テストする価値がない場合があります。しかし、テストしたいビジネスロジックがそこにあったと仮定します。
私が見ることができる唯一の方法は、各テストの前にいくつかのセットアップを行うことです。
var fakeXrm = {};
fakeXrm.Page = {};
fakeXrm.Page.getAttribute = function(name) {
var tempAttr = {};
tempAttr.getValue = function() {
return 'A fake value';
}
}
そして、'A fake value'
返されることをテストしますが、これは私にはまったく正しく感じられません。
どこが間違っているのですか?