Блочное тестирование
143
th is .A s s e t.a ttrib u te s = ["name"]; var a = th is .A s s e t.in it( ) ; a.name = " te st.p d f"; a .id = 1; e q u a ls(a .a ttrib u te s (), { name: " te st.p d f id: 1 }); Если его опробовать, вы увидите, что он не будет пройден, как на странице, по казанной на рис. 9.2. Это потому что в функции equals () используется оператор сравнения ==, который будет давать отрицательный результат для объектов и мас сивов. Вместо этого нам нужно воспользоваться функцией same(), осуществляю щей глубокое сравнение, и наш комплект тестов будет снова пройден: test("attributes()", function(){ this.Asset.attributes = ["name"]; var a = this.Asset.init(); a.name = "test.pdf"; a.id = 1;
sam e(a .attrib u tes(), { name: " te st.p d f", id: 1 }); QUnit включает пару других типов утверждений: notEqual() и raisesQ . Полную версию примеров их применения можно найти в assets/ch09/qunit/model.test.js или в документации по QUnit.
QUnit Test Suite ■ Q Hkde passed tests MoziHa/5.0 (Macintosh; U; Intel M ac O S X 10 в 6; en-US) AppleWebKrt/534.13 {KHTML, like Gecko) Chrome/9.0.597.107 Safarl/534.13
Testis completed n 19 mftseconda, 3 tes+s of 4 passed 1 faded. 1. Model
toadQ (0. 3, $
Рис. 9.2. Проваленные тесты в QUnit