Тесты Qunit не работают в Visual Studio 2012, поскольку они работают в браузере

Я разработал SPA-приложение, используя Knockout и Breeze, я использовал qunitJS для модульного тестирования, которое хорошо работает в браузере для моего проекта. Недавно я нашел плагин «Chutzpah» для VS2012, который может хорошо работать для тестирования qunit, который может проверять тестовые случаи и отвечать на тест, хотя я использую бриз, мои тестовые примеры включают:

  1. Создание, удаление, изменение сущностей на стороне клиента

  2. Сохраните изменения на стороне сервера с помощью контроллера бриза в SQLServer.

Здесь проблема заключается в том, что тестовые примеры breeze терпят неудачу, когда я тестирую в режиме наглости, потому что они не получают информацию на стороне клиента, например (Metadata/ControllerMethods), которая вызывается браузером через URL-адрес, определенный в Breezeconfig. Мой вопрос заключается в том, как мы можем выполнить модульное тестирование на бризе на стороне сервера, как это делают настоящие модульные тесты. Приветствуются предложения по использованию новых подключаемых модулей или библиотек, которые действительно могут заставить меня проводить модульное тестирование breeze

Вот фрагмент моего тестового проекта:

 asyncTest("can save nothing", function () {
  expect(1);
  newEm().saveChanges()
      .then(function(saveResult) {
          equal(saveResult.entities.length, 0, 'succeeded in saving nothing');
      })
      .catch(handleFail).finally(start);
});

asyncTest("can save a new Customer entity", function () {
  expect(1);

    // Create and initialize entity to save
    var em = newEm();
    var customer = em.createEntity('Customer', {
        CustomerID: newGuidComb(),
        CompanyName: 'Test1 ' + new Date().toISOString()
    });

    em.saveChanges()
        .then(function (saveResults) {
            ok(!!saveResults.entities[0], ' should have saved new Customer with CustomerID ' +
                customer.getProperty('CustomerID'));
        })
        .catch(handleFail).finally(start);
});

asyncTest("can modify my own Customer entity", function () {
    expect(2);
    var timestamp = new Date().toISOString();
    var em = newEm();

    var customer = em.createEntity('Customer', {
        CustomerID: newGuidComb(),
        CompanyName: "Test2A " + timestamp
    });

    em.saveChanges().then(modifyCustomer).fail(handleSaveFailed).fin(start);

    function modifyCustomer(saveResults) {
        var saved = saveResults.entities[0];
        ok(saved && saved === customer,
            "save of added customer should have succeeded");
        customer.CompanyName("Test2M " + timestamp);
        return em.saveChanges()
        .then(confirmCustomerSaved);
    }

    function confirmCustomerSaved(saveResults) {
        var saved = saveResults.entities[0];
        ok(saved && saved === customer,
            "save of modified customer, '{0}', should have succeeded"
            .format(saved && saved.CompanyName()));
    }

});

person ashishraaj    schedule 29.04.2015    source источник


Ответы (1)


Короткий ответ — настроить тесты так, чтобы связь с сервером не требовалась. Захватите метаданные, чтобы вы могли загрузить их из скрипта перед запуском тестов. . Создавайте фиктивные данные в Breeze, чтобы запрос из локального EntityManager вместо сервера.

И, конечно же, вы должны отделить бизнес-логику вашего приложения (такую, которая требует большого количества тестов) от битов связи с сервером.

person Steve Schmitt    schedule 29.04.2015
comment
Спасибо, Стив, мы можем загружать метаданные и запрашивать с помощью локального EntityManager, но как насчет сохранения данных обратно в базу данных и их извлечения, как мы это делаем?? Если я получил этот ответ, то моя проблема в основном решена. - person ashishraaj; 30.04.2015