Month: August 2015

Obsługa przeglądarki dla laików (skróty klawiaturowe)

Posted on Updated on

Po co to robimy?

Kilka podstawowych skrótów klawiaturowych potrafi bardzo przyspieszyć naszą pracę z przeglądarką.

Podstawowe skróty

Działają we wszystkich głównych przeglądarkach jak Chrome, Firefox, Opera, Internet Explorer:

  • Control + T – otwórz nową zakładkę
  • Control + Tab – przejdź do następnej zakładki
  • Control + Shift + Tab – przejdź do poprzedniej zakładki
  • Control + W – zamknij zakładkę (Control Wyjdź)
  • Control + Shift + T – otwórz ostatnio zamkniętą zakładkę (nie musimy szukać w historii)

Szybkie wyszukiwanie w Google

Będąc w dowolnym miejscu w przeglądarce, wciskamy Control + T aby otworzyć nową zakładkę, a następnie od razu piszemy interesujące nas rzeczy i potwierdzamy ENTERem. TAK, od razu w Pasku Adresu. Nie musimy wchodzić na stronę google.com, ani przechodzić w jakiś specjalny pasek do wyszukiwania.

Jeśli chcemy wyszukać bez przechodzenia do nowej zakładki to F6 przeniesie nas do paska adresu (wyszukiwania) i od razu piszemy (aktualny adres zniknie gdy zaczniemy pisać coś nowego).

wyszukaj z paska adresu

Advertisements

AutoFixture – ObjectCreationException

Posted on Updated on

Pojawia mi się podczas testów integracyjnych bazy. Korzystam z EntityFramework i mam relacje jeden do wielu. Występuja cykle.

Czyli po wykonaniu:

var account = fixture.Build<Account>();

Dostaję:

AutoFixture was unable to create an instance of type Ploeh.AutoFixture.Kernel.FiniteSequenceRequest because the traversed object graph contains a circular reference. Information about the circular path follows below. This is the correct behavior when a Fixture is equipped with a ThrowingRecursionBehavior, which is the default. This ensures that you are being made aware of circular references in your code. Your first reaction should be to redesign your API in order to get rid of all circular references. However, if this is not possible (most likely because parts or all of the API is delivered by a third party), you can replace this default behavior with a different behavior: on the Fixture instance, remove the ThrowingRecursionBehavior from Fixture.Behaviors, and instead add an instance of OmitOnRecursionBehavior.

Rozwiązanie:

// for all fixture, per TYPE
fixture.Register<ExtensionDataObject>(() => null);

// for one object creation, per property
var account = fixture.Build<Account>()
    .Without(a => a.CustomerAccount)
    .Create();

xUnit – zalety Setup w konstruktorze

Posted on

Zaleta xUnit versus NUnit jest to że kod inicjalizujący każdy pojedynczy test jest w konstruktorze zamiast w metodzie Setup() otagowanej atrybutem Setup. Analogicznie sprzątanie po teście jest w metodzie Dispose() zamiast w TearDown.

Zauważyłem dziś dodatkowy plus. Dzieki temu większość pól które inicjalizujemy na początku testu może być oznaczona jako readonly. Bardzo się przydaje bo mamy pewność po co są te pola i nikt nie spróbuje ich ruszyć.