Моя первая программа на Scala

Неожиданно для себя решил немного повернуть в сторону функциональщины. В качестве экспериментального языка было принято решение взять Scala.

Побаловавшись с примерами с курса от Twitter решил попробовать написать что-нибудь простое. Например, консольное приложение для поиска вопросов на StackOverflow.

В качестве IDE использовал IntelliJ Idea 14 Community Edition с плагином для Scala (все устанавливается очень просто).

Continue reading

DELETE и PUT запросы к методам ASP.NET MVC контроллера

На сайте ASP.NET MVC есть контроллер с методами:

[HttpGet]
public void Get(int? id) {
// получение объекта
}

[HttpPost]
public void Create(Model model) {
// создание объекта
}

[HttpDelete]
public void Delete(int? id) {
// удаление объекта
}

[HttpPut]
public void Update(int? id, Model model) {
// изменение объекта
}

При обращении к методам AJAX-запросам GET и POST работают корректно, но методы DELETE и PUT не выполняются – возвращается ошибка 401 Unauthorized.
Continue reading

Изучаю NUnit. Часть 2

В прошлый раз разобрали самые простые варианты реализации тестов с использованием фреймворка NUnit.

Сегодня остановлюсь на несколько более сложных примерах с использованием стандартных атрибутов NUnit: SetUp, ExpectedException и Ignore.
Continue reading

Check-In в новую ветку в Team Foundation Server 2013

Представим следующую ситуацию: вы пилите некоторую функциональность в основной ветке проекта (бывает такое, согласитесь?).
В некоторый момент приходит осознание того, что заливать это в TFS нет никакой возможности (фича не доделана, появились более приоритетные задачи…).
И удалять, конечно же, тоже нельзя.
Continue reading

MS SQL и русский текст в Unicode

В веб-приложении на ASP.NET WebAPI используется база данных MS SQL, генерируемая с использованием Entity Framework 6 Code First. Collation этой базы данных – unicode. Однако, если создавать записи в этой БД с кириллическими символами, используя методы WebAPI-контроллера, русский текст заменяется на вопросительные знаки.

Continue reading

Изучаю NUnit. Часть 1

NUnit – фреймворк для модульного тестирования и разработки по TDD. Для упорядочивания здесь знаний будет цикл статей о нём.

Что тестировать?

Напишем простой класс Fibonacci, который вычисляет число Фибоначчи, с единственным методом Calculate:

namespace SimpleLibrary {
  public class Fibonacci {
    public static int Calculate(int x) {
      if (x <= 0)
        return 0;
 
      if (x == 1)
        return 1;
 
      return Calculate(x - 1) + Calculate(x - 2);
    }
  }
}

Первый тест

Отделим тесты от рабочего кода в отдельную сборку: добавьте в свой Solution новый проект Fibonacci.Tests в котором будут разрабатываться тесты для нашего класса. Переименуем класс Class1 в FibonacciTest.

Добавим через NuGet ссылки на NUnit (собственно, сам фреймоворк) и NUnit Test Adapter (для того, чтобы тесты можно было запускать прямо из Visual Studio).

К тому же необходимо добавить в проекте Fibonacci.Tests ссылку на тестируемую сборку Fibonacci.

Теперь все готово, для того, чтобы вы могли написать свой первый тест с NUnit.

Измените код класса FibonacciTest следующим образом:

using System;
using SimpleLibrary;
using MbUnit.Framework;

namespace SimpleLibrary.Test {
  public class FibonacciTest {
    [Test]
    public void Fibonacci_of_number_greater_than_one() {
      int result = Fibonacci.Calculate(6);
      Assert.AreEqual(8, result);
    }
  }
}

Что мы сделали в предыдущем примере:

  • Импортировали NUnit
  • Добавили новый public метод Fibonacci_of_number_greater_than_one.
  • Добавили к методу Fibonacci_of_number_greater_than_one атрибут [Test].
  • В методе Fibonacci_of_number_greater_than_one добавили вызов метода Assert.AreEqual.

Метод Assert.AreEqual только лишь проверяет, что Fibonacci.Calculate(6) равен 8. Класс Assert очень полезен при написании тестов, т.к. содержит большое количество вспомогательных методов для этого.

Соберите проект и в окне Test Explorer нажмите на ссылку “Run Tests”. Ошибок быть не должно.

Теперь у нас есть первый юнит-тест.