Вот простой юнит-тест для вашего класса.
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import javax.cache.Cache;
import java.lang.reflect.Field;
@RunWith(PowerMockRunner.class)
@PrepareForTest({SomeClass.class})
public class SomeClassTest {
@Before
public void setup() throws IllegalAccessException {
Cache<String, Integer> cache = Mockito.mock(Cache.class);
Mockito.when(cache.get("Language1")).thenReturn(1);
Field field = PowerMockito.field(SomeClass.class, "cache");
field.set(SomeClass.class, cache);
}
@Test
public void should_return_1_when_Language1_is_the_input() throws Exception {
Integer expectedResult = 1;
Assert.assertEquals(expectedResult, SomeClass.getLanguageId("Language1"));
}
@Test
public void should_return_null_when_input_is_null() throws Exception {
Assert.assertNull(SomeClass.getLanguageId(null));
}
@Test (expected = Exception.class)
public void should_throw_exception_when_unknown_language_is_input() throws Exception {
SomeClass.getLanguageId("UnknownLanguage");
}
}
Править: Да, это верно, что версии 5.n и 6.n MySQL 5 и 6 реализуют CREATE TRIGGER
и DROP TRIGGER
и ничто иное. Согласно этому ломтю документации Пост-ГРЭС, даже нет CREATE TRIGGER
в SQL 92 поэтому считайте себя удачливыми иметь ТРИГГЕР вообще :-)
Документация плагина MySQL Visual Studio имеет:
Для изменения существующего триггера, дважды щелкают по узлу триггера, который Вы хотите изменить, или щелкнуть правой кнопкой по этому узлу и выбрать команду Alter Trigger из контекстного меню. Любая из команд открывает SQL Editor.
... который, кажется, делает то, что Вы хотите. Мое предположение, это - сахар GUI, и негласно Вы получаете a DROP CREATE
.
До триггера для некоторых UPDATE
s и не другие, SQL имеет точно один UPDATE
на таблицу. Поместите IF
пункт в начале Вашего UPDATE
инициируйте так, чтобы Ваша логика - независимо от того, что Вы делаете в части из Вашего UPDATE
s - только выполняется, когда Вы думаете, что это является соответствующим.
MySQL имеет ТРИГГЕР ЗАМЕНЫ, правильно?
Как заметка на полях.. Действительно ли это - проблема? Если Вы волнуетесь, что запросы выполняются промежуточное ОТБРАСЫВАНИЕ и СОЗДАЮТ, Вы могли бы всегда блокировать таблицу заранее.