次のように andという 2 つのクラスがあるBook
とLibrary
します。
var Book = function(title, author)
{
this.title = title;
this.author = author;
};
と
var Library = function()
{
var dbName = 'test';
this.getLibrary = function() {
return JSON.parse(window.localStorage.getItem(dbName));
};
this.save = function(library) {
window.localStorage.setItem(dbName, JSON.stringify(library));
};
}
Library.prototype.addBook = function(book) {
var library = this.getLibrary();
library.push(book);
this.save(library);
return library;
};
Library.prototype.removeBook = function(book) {
var library = this.getLibrary();
// Find and delete the right book
this.save(library);
return library;
};
私の質問は次のとおりです: Library
QUnitを使用してクラスをユニットテストして、実際のアトミックで独立したテストを行うにはどうすればよいですか?
このテスト関数を書きましたが、満足できませんでした。独立してテストする必要があると思われるいくつかの機能が混在しているため、非常にアトミックで独立しているようには見えません。より良い方法があるかどうかを知りたいのですが、すでにうまくテストしています。
test("test", function() {
var library = new Library();
deepEqual(library.getLibrary(), []);
// Add book1
var book1 = new Book("A book", "An author");
deepEqual(library.addBook(book1), [book1]);
deepEqual(library.getLibrary(), [book1]);
// Add book2
book2 = new Result("A new book", "Another author");
deepEqual(library.addBook(book2), [book2, book1]);
deepEqual(library.getLibrary(), [book2, book1]]);
// Remove book1
deepEqual(library.removeResult(book1), [book2]);
deepEqual(library.getLibrary(), [book2]);
// Remove book2
deepEqual(library.removeResult(book2), []);
deepEqual(library.getLibrary(), []);
});