【发布时间】:2013-09-17 11:46:32
【问题描述】:
我想测试一个函数以确保 jquery.dataTable 在我应该调用的时候被调用。我想用一个sinon spy来做这个。
我正在使用 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); 的任何想法电话会很棒,谢谢!
【问题讨论】:
标签: javascript jquery typescript qunit sinon