Jasmineでユニットテストをしています。私はmodule.exports
とrequire
を使用して仕様に正常に注入されたモジュールgetContacts
を持っています。私はモジュール自体にアクセスできますが、モジュールメソッドは未定義に戻っているため、ユニットとしてテストすることはできません。以下は、モジュールのコードです:Jasmineを使用してjsモジュールのアクセス方法を個別にテストできるようにする
var getContacts = function() {
var GetContacts = this;
var contacts = require('nativescript-contacts');
var model = require("../main-view-model");
GetContacts.init = (function() {
var self = this;
contacts.getContact().then(function(args){
self.makeName(args.data);
self.getPhoneNumber(args.data);
}).catch(function(e) {
console.log("promise \"contacts.getContact()\" failed with" + e.stack + "\n" + "value of self:" + " " + self)
});
}());
GetContacts.getPhoneNumber = function(data) {
if(data.phoneNumbers.length > 0){
model.phone = data.phoneNumbers[0];
}
};
GetContacts.makeName = function(data) {
if(data.name.displayname) {
model.contactName = data.name.displayname;
}
else {
}
model.contactName = data.name.given + " " + data.name.family;
};
};
module.exports = getContacts;
とspecファイル:
describe("getContacts", function() {
"use strict";
var contacts, model, getContacts, data;
beforeEach(function() {
contacts = require('nativescript-contacts');
model = require("../main-view-model");
getContacts = require('../src/getContacts.js');
data = {
"data": {
"name": {
"given": "John",
"middle": "Peter",
"family": "Smith",
"prefix": "Mr.",
"suffix": "Jr.",
"testEmptyObject": {},
"testEmptyString": "",
"testNumber": 0,
"testNull": null,
"testBool": true,
"displayname": "John Smith",
"phonetic": {
"given": null,
"middle": null,
"family": null
}
}
},
"response": "selected"
}
});
it("Gets the display name as contact name if display name is a string with length", function() {
expect(getContacts.makeName(data)).toBe("John Smith");
});
});
テストがエラーで失敗します。
getContacts.makeName
is not a function
と確かにそれはundefined
を返しログイン。ログgetContacts
は、コンソール全体にgetContacts
関数を出力します。 makeName
とその他の方法にアクセスするにはどうすればいいですか?
私はこれを試しましたが、私は同じ結果を得ます – HelloWorld