関数をテストして、必要なときに jquery.dataTable が呼び出されていることを確認したいと考えています。シノンスパイを使ってこれをやりたい。
私は typescript を使用しており、実際にデータテーブルを作成する dataTableManager があります。テストフレームワークとしてqunitを使用しています
どうすればこれをスパイできますか?現在、次のエラーが発生しています
Attempted to wrap undefined property dataTable as function
ここに私のテストがあります
test("DataTableIsCalledWithOptionsWhenIdIsFoundOnThePage", function () {
// arrange
$("#qunit_fixture").append("<table id='#testTable'></table>");
var createDateTableFunctionSpy = sinon.spy($("#testTable"), "dataTable");
var customOptions = {
"iDisplayLength": 200,
"aoColumns": [
{ sWidth: '3%' },
{ sWidth: '47%' },
{ sWidth: '12%' },
{ sWidth: '17%' },
{ sWidth: '14%' },
{ sWidth: '7%' }],
"aoColumnDefs": [
{ 'bSortable': false, 'aTargets': [0, 5] }
]
};
var dataTableManager = new DataTableManager($, "#testTable", customOptions);
// act
dataTableManager.createDataTable();
// assert
ok(createDateTableFunctionSpy.called);
});
ここに私のコンストラクタがあります
constructor(jQuery: JQueryStatic, tableId: string, customOptions: DataTables.Options){
var self = this;
self.jQuery = jQuery;
self.options = {};
self.jQuery.extend(self.options, DataTableManager.defaultOptions, customOptions);
self.tableId = tableId;
}
ここに私がテストしようとしている作成機能があります
createDataTable = function () {
// if it doesn't exist on the dom return
var actualTable = this.jQuery(this.tableId);
if (actualTable.length == 0) {
return;
}
// create the data table with options
var newDataTable = actualTable.dataTable(this.options);
};
actualTable.dataTable(this.options); をスパイする方法についてのアイデアはありません。電話は素晴らしいでしょう、ありがとう!